cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/types/PostgreSQLDatabaseType.java -text
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/types/SqlServer2000DatabaseType.java -text
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/types/SqlServer2005DatabaseType.java -text
++cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/types/SqlServer2008DatabaseType.java -text
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/types/SybaseDatabaseType.java -text
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/CdmUpdater.java -text
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ColumnAdder.java -text
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/unitils/CleanSweepInsertLoadStrategy.java -text
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/unitils/FlatFullXmlWriter.java -text
cdmlib-persistence/src/test/resources/META-INF/persistence.xml -text
++cdmlib-persistence/src/test/resources/c3p0-config.xml -text
cdmlib-persistence/src/test/resources/dbscripts/001-cdm.h2.sql -text
cdmlib-persistence/src/test/resources/dbscripts/hibernate.cfg.xml -text
cdmlib-persistence/src/test/resources/dbscripts/hibernate.properties -text
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/CommonServiceImplTest.java -text
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/DescriptionServiceImplTest.java -text
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/IdentifiableServiceBaseTest.java -text
--cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/IdentificationKeyGeneratorTest.java -text
--cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/MediaServiceImplTest.java -text
++cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/IdentificationKeyGeneratorTTT.java -text
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NameServiceImplTest.java -text
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGeneratorTest.java -text
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/PolytomousKeyServiceImplTest.java -text
import java.util.ArrayList;\r
import java.util.List;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.http.HttpException;\r
import org.apache.http.NameValuePair;\r
<artifactId>unitils-core</artifactId>
<scope>test</scope>
</dependency>
++ <!-- probably most unitis dependencies can be deleted from here -->
<dependency>
<groupId>org.unitils</groupId>
<artifactId>unitils-database</artifactId>
++ <exclusions>
++ <exclusion>
++ <groupId>commons-dbcp</groupId>
++ <artifactId>commons-dbcp</artifactId>
++ </exclusion>
++ </exclusions>
<scope>test</scope>
</dependency>
<dependency>
<dependency>
<groupId>org.unitils</groupId>
<artifactId>unitils-orm</artifactId>
++ <exclusions>
++ <exclusion>
++ <groupId>javax.persistence</groupId>
++ <artifactId>persistence-api</artifactId>
++ </exclusion>
++ </exclusions>
<scope>test</scope>
</dependency>
<dependency>
\r
import javax.xml.stream.XMLStreamException;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.Before;\r
class="org.springframework.beans.factory.config.PropertiesFactoryBean">\r
<property name="properties">\r
<props>\r
-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>\r
++ <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</prop>\r
<prop key="hibernate.show_sql">false</prop>\r
<prop key="hibernate.format_sql">false</prop>\r
-- <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</prop>\r
++ <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.impl.FSDirectoryProvider</prop>\r
<!-- TODO trying to use a managed session context\r
<prop key="hibernate.current_session_context_class">managed</prop>\r
-->\r
</bean>\r
\r
\r
++ <!-- \r
++ We do not use old springmodules spelling module anymore. See persistence spelling.xml comments for details.\r
++ Try to work with modern annotationbased spelling instead.\r
++ \r
<bean id="taxonSpellingDirectory" class="org.springmodules.lucene.index.support.FSDirectoryFactoryBean">\r
<property name="location" value="file:./target/index/eu.etaxonomy.cdm.model.taxon.TaxonBase_spelling"/>\r
<property name="create" value="true"/>\r
-- </bean>\r
++ </bean> -->\r
</beans>
<dependency>
<groupId>org.unitils</groupId>
<artifactId>unitils-database</artifactId>
++ <exclusions>
++ <exclusion>
++ <groupId>commons-dbcp</groupId>
++ <artifactId>commons-dbcp</artifactId>
++ </exclusion>
++ </exclusions>
<scope>test</scope>
</dependency>
<dependency>
<dependency>
<groupId>org.unitils</groupId>
<artifactId>unitils-orm</artifactId>
++ <exclusions>
++ <exclusion>
++ <groupId>javax.persistence</groupId>
++ <artifactId>persistence-api</artifactId>
++ </exclusion>
++ </exclusions>
<scope>test</scope>
</dependency>
<dependency>
int newTaxonId = rs.getInt("taxonId");\r
String tdwgCodeString = rs.getString("TDWGCode");\r
String emCodeString = state.getConfig().isIncludesAreaEmCode() ? rs.getString("EMCode") : null;\r
-- Integer emStatusId = (Integer)rs.getObject("emOccurSumCatId");\r
++ Integer emStatusId = nullSafeInt(rs, "emOccurSumCatId");\r
\r
try {\r
//status\r
if ((i++ % modCount) == 0 && i!= 1 ){ logger.info("occurrence sources handled: " + (i-1));}\r
\r
Integer occurrenceSourceId = rs.getInt("OccurrenceSourceId");\r
-- Integer occurrenceFk = (Integer)rs.getObject("OccurrenceFk");\r
++ Integer occurrenceFk =nullSafeInt(rs, "OccurrenceFk");\r
String sourceNumber = rs.getString("SourceNumber");\r
String oldName = rs.getString("OldName");\r
-- Integer oldNameFk = (Integer)rs.getObject("OldNameFk");\r
++ Integer oldNameFk = nullSafeInt(rs, "OldNameFk");\r
\r
Distribution distribution = (Distribution)state.getRelatedObject(BerlinModelOccurrenceImport.NAMESPACE, String.valueOf(occurrenceFk));\r
\r
import java.util.UUID;\r
\r
import org.apache.log4j.Logger;\r
--import org.hibernate.dialect.FirebirdDialect;\r
\r
import eu.etaxonomy.cdm.api.service.IIdentifiableEntityService;\r
import eu.etaxonomy.cdm.io.common.ImportStateBase;\r
import eu.etaxonomy.cdm.model.description.PolytomousKey;
import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
import eu.etaxonomy.cdm.model.name.NonViralName;
++import eu.etaxonomy.cdm.model.name.Rank;
import fr.lis.ikeyplus.IO.SDDSaxParser;
import fr.lis.ikeyplus.model.DataSet;
import fr.lis.ikeyplus.model.ICharacter;
pkNode = createPkNode(null, statement);
-- NonViralName nonViralName = NonViralName.NewInstance(null);
++ //TODO handle rank
++ NonViralName<?> nonViralName = NonViralName.NewInstance(Rank.UNKNOWN_RANK());
nonViralName.setTitleCache(taxon.getName(), true);
eu.etaxonomy.cdm.model.taxon.Taxon cdmTaxon = eu.etaxonomy.cdm.model.taxon.Taxon.NewInstance(
nonViralName, null); //FIXME !!!!!!
import java.util.UUID;\r
\r
import org.apache.commons.lang.StringUtils;\r
--import org.apache.http.HttpException;\r
import org.apache.log4j.Logger;\r
import org.jdom.Element;\r
import org.jdom.Namespace;\r
import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;\r
import eu.etaxonomy.cdm.model.media.Rights;\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
++import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
import eu.etaxonomy.cdm.model.reference.Reference;\r
\r
NonViralName<?> tnb = null;\r
if (!id.equals("")) {\r
-- tnb = NonViralName.NewInstance(null);\r
++ tnb = NonViralName.NewInstance(Rank.UNKNOWN_RANK());\r
IdentifiableSource source = null;\r
if (uri != null) {\r
if (!uri.equals("")) {\r
*/\r
private Taxon handleCDNoScope(Namespace sddNamespace, SDDImportState cdmState, Element elCodedDescription ) {\r
Taxon taxon = null;\r
-- NonViralName<?> nonViralName = NonViralName.NewInstance(null);\r
++ NonViralName<?> nonViralName = NonViralName.NewInstance(Rank.UNKNOWN_RANK());\r
String id = new String("" + taxonNamesCount);\r
IdentifiableSource source = IdentifiableSource.NewInstance(id, "TaxonName");\r
importRepresentation(elCodedDescription, sddNamespace, nonViralName, id, cdmState);\r
import java.util.Set;\r
import java.util.UUID;\r
\r
--import junit.framework.Assert;\r
--\r
import org.apache.log4j.Logger;\r
++import org.junit.Assert;\r
import org.junit.Before;\r
import org.junit.Test;\r
import org.unitils.dbunit.annotation.DataSet;\r
private static final Logger logger = Logger.getLogger(NormalExplicitImportTest.class);\r
\r
@SpringBeanByName\r
-- CdmApplicationAwareDefaultImport defaultImport;\r
++ CdmApplicationAwareDefaultImport<?> defaultImport;\r
\r
@SpringBeanByType\r
INameService nameService;\r
Set<Synonym> synonyms = noctuaPronubaTaxon.getSynonyms();\r
assertEquals("Number of synonyms should be 1", 1, synonyms.size());\r
Synonym synonym = synonyms.iterator().next();\r
-- assertEquals("Synonym name should be ", "Noctua atlantica", ((NonViralName)synonym.getName()).getNameCache());\r
++ assertEquals("Synonym name should be ", "Noctua atlantica", ((NonViralName<?>)synonym.getName()).getNameCache());\r
Set<TaxonDescription> descriptions = noctuaPronubaTaxon.getDescriptions();\r
Assert.assertEquals("Number of descriptions should be 1", 1, descriptions.size());\r
TaxonDescription taxonDescription = descriptions.iterator().next();\r
assertEquals("Unexpected description text", expectedText, text);\r
assertEquals("Number of source elements should be 1", 1, textData.getSources().size());\r
DescriptionElementSource source = textData.getSources().iterator().next();\r
-- Reference ref = source.getCitation();\r
++ Reference<?> ref = source.getCitation();\r
assertNotNull("Citation should not be null", ref);\r
assertNotNull("AuthorTeam should not be null", ref.getAuthorTeam());\r
assertEquals("Source author should be 'Meyer et. al.'", "Meyer et. al.",ref.getAuthorTeam().getTitleCache());\r
assertEquals("Publication title should be 'My first book'", "My first book", ref.getTitle());\r
assertEquals("Publication year should be '1987'", "1987", ref.getYear());\r
-- TaxonNameBase nameUsedInSource = source.getNameUsedInSource();\r
++ TaxonNameBase<?,?> nameUsedInSource = source.getNameUsedInSource();\r
assertNotNull("Name used in source should not be null", nameUsedInSource);\r
assertEquals("Name used in source title should be ", "Abies", nameUsedInSource.getTitleCache());\r
\r
import java.io.InputStreamReader;\r
import java.net.URI;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
import org.junit.Test;\r
\r
import eu.etaxonomy.cdm.model.agent.Person;\r
\r
package eu.etaxonomy.cdm.io.sdd.in;\r
\r
--import static org.junit.Assert.assertEquals;\r
import static org.junit.Assert.assertNotNull;\r
\r
import java.net.URI;\r
import java.net.URL;\r
import java.util.UUID;\r
\r
--import junit.framework.Assert;\r
--\r
++import org.junit.Assert;\r
import org.junit.Before;\r
import org.junit.Test;\r
import org.unitils.dbunit.annotation.DataSet;\r
import org.unitils.spring.annotation.SpringBeanByType;\r
\r
--import eu.etaxonomy.cdm.api.service.INameService;\r
import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;\r
import eu.etaxonomy.cdm.io.sdd.ikeyplus.IkeyPlusImport;\r
import eu.etaxonomy.cdm.model.description.PolytomousKey;\r
@Test\r
@DataSet(/*loadStrategy=CleanSweepInsertLoadStrategy.class, */value="../../BlankDataSet.xml")\r
public void testDoInvoke() {\r
-- UUID newKeyUuid = null;\r
++ commitAndStartNewTransaction(null);\r
++ \r
++ UUID newKeyUuid = null;\r
try {\r
ikeyPlusImport.getKey(sddUri, null);\r
newKeyUuid = ikeyPlusImport.getCdmKey().getUuid();\r
import java.net.URL;\r
import java.sql.SQLException;\r
\r
--import junit.framework.Assert;\r
--\r
import org.apache.log4j.Level;\r
++import org.junit.Assert;\r
import org.junit.Before;\r
import org.junit.Ignore;\r
import org.junit.Test;\r
import eu.etaxonomy.cdm.database.DataSourceNotFoundException;\r
import eu.etaxonomy.cdm.database.ICdmDataSource;\r
import eu.etaxonomy.cdm.io.common.IExportConfigurator;\r
--import eu.etaxonomy.cdm.io.common.Source;\r
import eu.etaxonomy.cdm.io.sdd.out.SDDCdmExporter;\r
import eu.etaxonomy.cdm.io.sdd.out.SDDExportConfigurator;\r
import eu.etaxonomy.cdm.io.sdd.out.SDDExportState;\r
class="org.springframework.beans.factory.config.PropertiesFactoryBean">\r
<property name="properties">\r
<props>\r
-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>\r
++ <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</prop>\r
<prop key="hibernate.show_sql">false</prop>\r
<prop key="hibernate.format_sql">false</prop>\r
-- <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</prop>\r
++ <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.impl.FSDirectoryProvider</prop>\r
<prop key="hibernate.search.default.indexBase">./target/index</prop>\r
</props>\r
</property>\r
</bean>\r
\r
\r
-- <bean id="taxonSpellingDirectory" class="org.springmodules.lucene.index.support.FSDirectoryFactoryBean">\r
++<!-- <bean id="taxonSpellingDirectory" class="org.springmodules.lucene.index.support.FSDirectoryFactoryBean">\r
<property name="location" value="file:./target/test-classes/eu.etaxonomy.cdm.model.taxon.TaxonBase_spelling"/>\r
<property name="create" value="true"/>\r
</bean>\r
<property name="analyzer">\r
<bean class="org.apache.lucene.analysis.SimpleAnalyzer"/>\r
</property>\r
-- </bean>\r
++ </bean> -->\r
\r
<bean id="authenticationManager" class="org.springframework.security.authentication.ProviderManager">\r
<property name="providers">\r
<HOMOTYPICALGROUP ID="1" UUID="8b214eb9-a6ac-58e5-af02-bbea634d2a17"/>\r
<TAXONBASE DTYPE="Taxon" ID="1" UUID="aafce7fe-0c5f-42ed-814b-4c7c2c715660" TITLECACHE="Abies sec. ???" PROTECTEDTITLECACHE="false" DOUBTFUL="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="1" USENAMECACHE="false" EXCLUDED="false" UNPLACED="false"/>\r
<TAXONBASE DTYPE="Synonym" ID="2" UUID="fc4a995b-37a9-4984-afe6-e352c6c04d92" TITLECACHE="Pinus sec. ???" PROTECTEDTITLECACHE="false" DOUBTFUL="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="2" USENAMECACHE="false" EXCLUDED="false" UNPLACED="false"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" UUID="88fab5b3-0d9a-42c3-9915-71fc17266116" TITLECACHE="Abies" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" UUID="26287f97-f147-4451-ba9f-aac0559324b1" TITLECACHE="Pinus" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" UUID="88fab5b3-0d9a-42c3-9915-71fc17266116" TITLECACHE="Abies" GENUSORUNINOMIAL="Abies" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="774"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" UUID="26287f97-f147-4451-ba9f-aac0559324b1" TITLECACHE="Pinus" GENUSORUNINOMIAL="Pinus" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="774"/>\r
<SYNONYMRELATIONSHIP ID="1" UUID="aa5868e5-84eb-4a3b-a9e2-2920ce14de2e" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="2" RELATEDTO_ID="1" TYPE_ID="870"/>\r
\r
</dataset>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>
-- <dependency>
-- <groupId>org.hibernate</groupId>
-- <artifactId>hibernate-annotations</artifactId>
-- </dependency>
++<!-- Part of hibernate-core since 3.6 -->
++<!-- <dependency> -->
++<!-- <groupId>org.hibernate</groupId> -->
++<!-- <artifactId>hibernate-annotations</artifactId> -->
++<!-- </dependency> -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-envers</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
-- <artifactId>hibernate-search</artifactId>
++ <artifactId>hibernate-search-engine</artifactId>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>joda-time</artifactId>
</dependency>
<dependency>
++ <groupId>org.jadira.usertype</groupId>
++ <artifactId>usertype.jodatime</artifactId>
++ <version>2.0.1</version>
++ </dependency>
++
++<!-- <dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time-hibernate</artifactId>
<exclusions>
<groupId>hibernate</groupId>
</exclusion>
</exclusions>
-- </dependency>
++ </dependency> -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
\r
package eu.etaxonomy.cdm.hibernate;\r
\r
--import java.io.Serializable;\r
import java.sql.PreparedStatement;\r
import java.sql.ResultSet;\r
import java.sql.SQLException;\r
import java.sql.Types;\r
\r
import org.apache.log4j.Logger;\r
--import org.hibernate.Hibernate;\r
import org.hibernate.HibernateException;\r
++import org.hibernate.engine.spi.SessionImplementor;\r
++import org.hibernate.type.StandardBasicTypes;\r
import org.hibernate.usertype.UserType;\r
++import org.jadira.usertype.dateandtime.shared.spi.AbstractSingleColumnUserType;\r
++import org.jadira.usertype.dateandtime.shared.spi.AbstractUserType;\r
++import org.jadira.usertype.dateandtime.shared.spi.ColumnMapper;\r
import org.joda.time.DateTimeFieldType;\r
import org.joda.time.Partial;\r
\r
* Only year, month and day is stored\r
* @author a.mueller\r
* @created 11.11.2008\r
-- * @version 1.0\r
++ * @version 2.0\r
*/\r
--public class PartialUserType implements UserType {\r
++public class PartialUserType extends AbstractUserType implements UserType /* extends AbstractSingleColumnUserType<Partial, String, ColumnMapper<Partial,String>> implements UserType */ {\r
++ private static final long serialVersionUID = -5323104403077597869L;\r
++\r
private static final Logger logger = Logger.getLogger(PartialUserType.class);\r
\r
++ //not required\r
public final static PartialUserType INSTANCE = new PartialUserType();\r
\r
-- private static final int[] SQL_TYPES = new int[]\r
-- {\r
++ private static final int[] SQL_TYPES = new int[]{\r
Types.VARCHAR,\r
};\r
\r
-- public int[] sqlTypes()\r
-- {\r
-- return SQL_TYPES;\r
-- }\r
--\r
-- public Class returnedClass()\r
-- {\r
-- return Partial.class;\r
-- }\r
--\r
-- public boolean equals(Object x, Object y) throws HibernateException\r
-- {\r
-- if (x == y)\r
-- {\r
-- return true;\r
-- }\r
-- if (x == null || y == null)\r
-- {\r
-- return false;\r
-- }\r
-- Partial dtx = (Partial) x;\r
-- Partial dty = (Partial) y;\r
--\r
-- return dtx.equals(dty);\r
-- }\r
--\r
-- public int hashCode(Object object) throws HibernateException\r
-- {\r
-- return object.hashCode();\r
-- }\r
--\r
-- public Object nullSafeGet(ResultSet resultSet, String[] strings, Object object) throws HibernateException, SQLException\r
-- {\r
-- return nullSafeGet(resultSet, strings[0]);\r
\r
-- }\r
--\r
-- public Object nullSafeGet(ResultSet resultSet, String string) throws SQLException\r
-- {\r
-- String partial = (String)Hibernate.STRING.nullSafeGet(resultSet, string);\r
++ @Override\r
++ public Partial nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner) \r
++ throws HibernateException, SQLException {\r
++ String partial = (String)StandardBasicTypes.STRING.nullSafeGet(rs, names, session, owner);\r
Partial result = new Partial(); \r
-- if (partial == null || partial.length() != 8)\r
-- {\r
++ if (partial == null || partial.length() != 8) {\r
return null;\r
}\r
Integer year = Integer.valueOf(partial.substring(0,4));\r
return result;\r
}\r
\r
--\r
-- public void nullSafeSet(PreparedStatement preparedStatement, Object value, int index) throws HibernateException, SQLException\r
-- {\r
-- if (value == null)\r
-- {\r
-- Hibernate.STRING.nullSafeSet(preparedStatement, null, index);\r
-- }\r
-- else\r
-- {\r
++ @Override\r
++ public void nullSafeSet(PreparedStatement preparedStatement, Object value, int index,\r
++ SessionImplementor session) throws HibernateException, SQLException {\r
++ if (value == null){\r
++ StandardBasicTypes.STRING.nullSafeSet(preparedStatement, null, index, session);\r
++ }else {\r
Partial p = ((Partial) value);\r
-- Hibernate.STRING.nullSafeSet(preparedStatement, partialToString(p), index);\r
++ StandardBasicTypes.STRING.nullSafeSet(preparedStatement, partialToString(p), index, session);\r
}\r
}\r
\r
}\r
}\r
\r
-- public Object deepCopy(Object value) throws HibernateException\r
-- {\r
-- if (value == null)\r
-- {\r
++ public Object deepCopy(Object value) throws HibernateException {\r
++ if (value == null) {\r
return null;\r
}\r
\r
return new Partial((Partial)value);\r
}\r
\r
-- public boolean isMutable()\r
-- {\r
-- return false;\r
-- }\r
--\r
-- public Serializable disassemble(Object value) throws HibernateException\r
-- {\r
-- return (Serializable) value;\r
-- }\r
--\r
-- public Object assemble(Serializable cached, Object value) throws HibernateException\r
-- {\r
-- return cached;\r
-- }\r
--\r
-- public Object replace(Object original, Object target, Object owner) throws HibernateException\r
-- {\r
-- return original;\r
-- }\r
++ @Override\r
++ public int[] sqlTypes() {\r
++ // TODO Auto-generated method stub\r
++ return SQL_TYPES;\r
++ }\r
\r
++ @Override\r
++ public Class returnedClass() {\r
++ // TODO Auto-generated method stub\r
++ return null;\r
++ } \r
\r
}\r
\r
package eu.etaxonomy.cdm.hibernate;\r
\r
\r
--import java.io.Serializable;\r
import java.net.URI;\r
import java.net.URISyntaxException;\r
import java.sql.PreparedStatement;\r
import java.sql.ResultSet;\r
import java.sql.SQLException;\r
import java.sql.Types;\r
++import java.util.UUID;\r
\r
++import org.hibernate.HibernateException;\r
import org.hibernate.TypeMismatchException;\r
++import org.hibernate.engine.spi.SessionImplementor;\r
++import org.hibernate.type.StandardBasicTypes;\r
import org.hibernate.usertype.UserType;\r
++import org.jadira.usertype.dateandtime.shared.spi.AbstractSingleColumnUserType;\r
++import org.jadira.usertype.dateandtime.shared.spi.AbstractUserType;\r
++import org.jadira.usertype.dateandtime.shared.spi.ColumnMapper;\r
\r
/**\r
* This class maps java.net.URI to varchar(255)\r
* @author a.mueller\r
*\r
*/\r
--public class URIUserType implements UserType, Serializable {\r
++public class URIUserType extends AbstractUserType implements UserType {\r
private static final long serialVersionUID = -5825017496962569105L;\r
\r
/**\r
*/\r
private static final int[] SQL_TYPES = {Types.VARCHAR};\r
\r
-- /**\r
-- * @return returns SQL type for the column to which the UserType is mapped\r
-- */\r
-- public int[] sqlTypes() {\r
-- return SQL_TYPES;\r
-- }\r
++ /* (non-Javadoc)\r
++ * @see org.jadira.usertype.dateandtime.shared.spi.AbstractSingleColumnUserType#returnedClass()\r
++ */\r
++ @Override\r
++ public Class returnedClass() {\r
++ return UUID.class;\r
++ }\r
\r
-- /**\r
-- * @return returns the class of the instance being managed by the UserType\r
-- */\r
-- public Class returnedClass() {\r
-- return URI.class;\r
-- }\r
++ @Override\r
++ public int[] sqlTypes() {\r
++ return SQL_TYPES;\r
++ }\r
\r
-- /**\r
-- * @param x first object to compare\r
-- * @param y second object to compare\r
-- * @return comparison result\r
-- * @throws HibernateException\r
-- */\r
-- public boolean equals(Object x, Object y) {\r
-- if (x == y) {\r
-- return true;\r
-- } else if (x == null || y == null) {\r
-- return false;\r
-- } else {\r
-- return x.equals(y);\r
-- }\r
-- }\r
\r
-- /**\r
-- * @param resultSet resultset object\r
-- * @param names names of the columns in the resultset\r
-- * @param owner parent object on which the value is to be set\r
-- * @return returns URI object\r
-- * @throws SQLException throws exception when error occurs in accessing the resultSet\r
-- */\r
-- public Object nullSafeGet(ResultSet resultSet, String[] names, Object owner)\r
-- throws SQLException {\r
-- String strURI = resultSet.getString(names[0]);\r
-- URI uri = null;\r
-- if (null != strURI) {\r
++ @Override\r
++ public URI nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner) \r
++ throws HibernateException, SQLException {\r
++ String val = (String) StandardBasicTypes.STRING.nullSafeGet(rs, names, session, owner);\r
++ \r
++ if(val == null) {\r
++ return null;\r
++ } else {\r
try {\r
-- uri = new URI(strURI);\r
-- } catch (URISyntaxException e) {\r
-- throw new TypeMismatchException(e);\r
-- }\r
-- }\r
-- return uri;\r
++ return new URI(val);\r
++ } catch (URISyntaxException e) {\r
++ throw new TypeMismatchException(e);\r
++ }\r
++ }\r
}\r
\r
-- /**\r
-- * @param statement prepared statement object\r
-- * @param value value being set in the statement\r
-- * @param index location of the value in the statement\r
-- * @throws SQLException throws exception when error occurs in accessing the statement\r
-- */\r
-- public void nullSafeSet(PreparedStatement statement, Object value, int index)\r
-- throws SQLException {\r
-- if (value == null) {\r
-- statement.setString(index, null);\r
-- } else {\r
-- URI uri = (URI) value;\r
-- statement.setString(index, uri.toString());\r
-- }\r
++ \r
++\r
++ @Override\r
++ public void nullSafeSet(PreparedStatement statement, Object value, int index, SessionImplementor session) \r
++ throws HibernateException, SQLException {\r
++\r
++ if (value == null) { \r
++// statement.setString(index, null); old version\r
++ StandardBasicTypes.STRING.nullSafeSet(statement, value, index, session);\r
++ } else {\r
++ URI uri = (URI) value;\r
++// statement.setString(index, uri.toString()); //old version\r
++ StandardBasicTypes.STRING.nullSafeSet(statement, uri.toString(), index, session);\r
++ }\r
++ \r
}\r
\r
/**\r
}\r
}\r
\r
-- /**\r
-- * @return returns false\r
-- */\r
-- public boolean isMutable() {\r
-- return false;\r
-- }\r
--\r
-- /**\r
-- * @param arg0 object to be assembled\r
-- * @param arg1 object to be assembled\r
-- * @return returns assembled object\r
-- */\r
-- public Object assemble(Serializable arg0, Object arg1) {\r
-- return (Serializable) deepCopy(arg0);\r
-- }\r
--\r
-- /**\r
-- * @param arg0 object to be disassembled\r
-- * @return returns disassembled object\r
-- */\r
-- public Serializable disassemble(Object arg0) {\r
-- return (Serializable) deepCopy(arg0);\r
-- }\r
\r
-- /**\r
-- * @param arg0 object whose hashcode is to be determined\r
-- * @return returns 0\r
-- */\r
-- public int hashCode(Object arg0) {\r
-- return 0;\r
-- }\r
\r
-- /**\r
-- * @param arg0 argument 0\r
-- * @param arg1 argument 1\r
-- * @param arg2 argument 2\r
-- * @return returns arg0\r
-- */\r
-- public Object replace(Object arg0, Object arg1, Object arg2) {\r
-- return arg0;\r
-- }\r
}\r
import java.util.UUID;\r
\r
import org.apache.log4j.Logger;\r
--import org.hibernate.Hibernate;\r
import org.hibernate.HibernateException;\r
++import org.hibernate.engine.spi.SessionImplementor;\r
++import org.hibernate.type.StandardBasicTypes;\r
import org.hibernate.usertype.UserType;\r
++import org.jadira.usertype.dateandtime.shared.spi.AbstractSingleColumnUserType;\r
++import org.jadira.usertype.dateandtime.shared.spi.AbstractUserType;\r
++import org.jadira.usertype.dateandtime.shared.spi.ColumnMapper;\r
\r
/**\r
* @author a.mueller\r
* @created 22.07.2008\r
-- * @version 1.0\r
++ * @version 2.0\r
*/\r
--public class UUIDUserType implements UserType {\r
++public class UUIDUserType extends AbstractUserType implements UserType {\r
++ static final long serialVersionUID = -3959049831344758708L;\r
++\r
@SuppressWarnings("unused")\r
private static final Logger logger = Logger.getLogger(UUIDUserType.class);\r
\r
-- private static final int[] TYPES = { Types.VARCHAR };\r
--\r
-- /* (non-Javadoc)\r
-- * @see org.hibernate.usertype.UserType#assemble(java.io.Serializable, java.lang.Object)\r
-- */\r
-- public Object assemble(Serializable cached, Object owner) throws HibernateException {\r
-- try {\r
-- if(cached == null) {\r
-- return null;\r
-- } else {\r
-- return UUID.fromString(cached.toString());\r
-- }\r
-- } catch (IllegalArgumentException e) {\r
-- throw new HibernateException(e);\r
-- }\r
-- }\r
++ private static final int[] SQL_TYPES = { Types.VARCHAR };\r
\r
/* (non-Javadoc)\r
* @see org.hibernate.usertype.UserType#deepCopy(java.lang.Object)\r
}\r
}\r
\r
-- /* (non-Javadoc)\r
-- * @see org.hibernate.usertype.UserType#equals(java.lang.Object, java.lang.Object)\r
-- */\r
-- public boolean equals(Object x, Object y) throws HibernateException {\r
-- return (x == y) || (x != null && y != null && (x.equals(y)));\r
-- }\r
--\r
-- /* (non-Javadoc)\r
-- * @see org.hibernate.usertype.UserType#hashCode(java.lang.Object)\r
-- */\r
-- public int hashCode(Object x) throws HibernateException {\r
-- return x.hashCode();\r
-- }\r
--\r
-- /* (non-Javadoc)\r
-- * @see org.hibernate.usertype.UserType#isMutable()\r
-- */\r
-- public boolean isMutable() {\r
-- return false;\r
-- }\r
--\r
-- /* (non-Javadoc)\r
-- * @see org.hibernate.usertype.UserType#nullSafeGet(java.sql.ResultSet, java.lang.String[], java.lang.Object)\r
-- */\r
-- public Object nullSafeGet(ResultSet resultSet, String[] names, Object o)\r
++ @Override\r
++ public UUID nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner) \r
throws HibernateException, SQLException {\r
-- String val = (String) Hibernate.STRING.nullSafeGet(resultSet, names[0]);\r
++ String val = (String) StandardBasicTypes.STRING.nullSafeGet(rs, names, session, owner);\r
\r
if(val == null) {\r
return null;\r
}\r
}\r
\r
-- /* (non-Javadoc)\r
-- * @see org.hibernate.usertype.UserType#nullSafeSet(java.sql.PreparedStatement, java.lang.Object, int)\r
-- */\r
-- public void nullSafeSet(PreparedStatement preparedStatement, Object o, int index)\r
++ @Override\r
++ public void nullSafeSet(PreparedStatement statement, Object value, int index, SessionImplementor session) \r
throws HibernateException, SQLException {\r
-- if (null == o) { \r
-- preparedStatement.setNull(index, Types.VARCHAR); \r
++ if (value == null) { \r
++// statement.setNull(index, Types.VARCHAR); old version\r
++ StandardBasicTypes.STRING.nullSafeSet(statement, value, index, session);\r
} else { \r
-- UUID uuid = (UUID)o;\r
-- preparedStatement.setString(index, uuid.toString()); \r
++ UUID uuid = (UUID)value;\r
++// statement.setString(index, uuid.toString()); //old version\r
++ StandardBasicTypes.STRING.nullSafeSet(statement, uuid.toString(), index, session);\r
}\r
}\r
\r
-- /* (non-Javadoc)\r
-- * @see org.hibernate.usertype.UserType#replace(java.lang.Object, java.lang.Object, java.lang.Object)\r
-- */\r
-- public Object replace(Object original, Object target, Object owner)\r
-- throws HibernateException {\r
-- return original;\r
-- }\r
\r
/* (non-Javadoc)\r
-- * @see org.hibernate.usertype.UserType#returnedClass()\r
++ * @see org.jadira.usertype.dateandtime.shared.spi.AbstractSingleColumnUserType#returnedClass()\r
*/\r
++ @Override\r
public Class returnedClass() {\r
return UUID.class;\r
}\r
\r
-- /* (non-Javadoc)\r
-- * @see org.hibernate.usertype.UserType#sqlTypes()\r
-- */\r
++ @Override\r
public int[] sqlTypes() {\r
-- return TYPES;\r
++ return SQL_TYPES;\r
}\r
++\r
++ \r
++\r
++\r
++\r
}\r
import javax.wsdl.xml.WSDLReader;\r
import javax.wsdl.xml.WSDLWriter;\r
\r
--import org.apache.commons.logging.Log;\r
--import org.apache.commons.logging.LogFactory;\r
--import org.hibernate.Hibernate;\r
import org.hibernate.HibernateException;\r
++import org.hibernate.engine.spi.SessionImplementor;\r
++import org.hibernate.type.StandardBasicTypes;\r
import org.hibernate.usertype.UserType;\r
++import org.jadira.usertype.dateandtime.shared.spi.AbstractSingleColumnUserType;\r
++import org.jadira.usertype.dateandtime.shared.spi.AbstractUserType;\r
++import org.jadira.usertype.dateandtime.shared.spi.ColumnMapper;\r
\r
import com.ibm.wsdl.factory.WSDLFactoryImpl;\r
\r
* @see org.hibernate.usertype.UserType UserType\r
* @see javax.wsdl.Definition Definition\r
*/\r
--public class WSDLDefinitionUserType implements UserType {\r
-- private static Log log = LogFactory.getLog(WSDLDefinitionUserType.class);\r
-- private static final int[] TYPES = { Types.CLOB };\r
++public class WSDLDefinitionUserType extends AbstractUserType implements UserType {\r
++ \r
++ private static final int[] SQL_TYPES = { Types.CLOB };\r
\r
public Object deepCopy(Object o) throws HibernateException {\r
\r
}\r
}\r
\r
++ \r
++ //not tested if this works with jadira.usertype\r
++ @Override\r
public Object assemble(Serializable cached, Object owner) throws HibernateException {\r
try {\r
WSDLFactory wsdlFactory = WSDLFactoryImpl.newInstance();\r
}\r
}\r
\r
++ //not tested if this works with jadira.usertype\r
++ @Override\r
public Serializable disassemble(Object value) throws HibernateException {\r
try {\r
WSDLFactory wsdlFactory = WSDLFactoryImpl.newInstance();\r
}\r
}\r
\r
-- public boolean equals(Object x, Object y) throws HibernateException {\r
-- return (x == y) || (x != null && y != null && (x.equals(y)));\r
-- }\r
--\r
-- public int hashCode(Object x) throws HibernateException {\r
-- return x.hashCode();\r
-- }\r
\r
-- public boolean isMutable() {\r
-- return true;\r
-- }\r
\r
-- public Object nullSafeGet(ResultSet resultSet, String[] names, Object o)\r
++ @Override\r
++ public Definition nullSafeGet(ResultSet rs, String[]names, SessionImplementor session, Object o)\r
throws HibernateException, SQLException {\r
-- Clob val = (Clob) resultSet.getClob(names[0]);\r
++ Clob val = (Clob)StandardBasicTypes.CLOB.nullSafeGet(rs, names, session, o);\r
++// Clob val = (Clob) rs.getClob(names[0]);\r
if(val == null) {\r
return null;\r
} else {\r
}\r
}\r
\r
-- public void nullSafeSet(PreparedStatement preparedStatement, Object o, int index)\r
++ \r
++\r
++ @Override\r
++ public void nullSafeSet(PreparedStatement statement, Object value, int index, SessionImplementor session) \r
throws HibernateException, SQLException {\r
-- if (null == o) { \r
-- preparedStatement.setNull(index, Types.CLOB); \r
++ if (value == null) { \r
++// statement.setNull(index, Types.CLOB); //old version\r
++ StandardBasicTypes.CLOB.nullSafeSet(statement, value, index, session);\r
} else { \r
try {\r
-- Definition definition = (Definition) o;\r
++ Definition definition = (Definition) value;\r
WSDLFactory wsdlFactory = WSDLFactoryImpl.newInstance();\r
StringWriter stringWriter = new StringWriter();\r
WSDLWriter writer = wsdlFactory.newWSDLWriter();\r
writer.writeWSDL(definition, stringWriter);\r
-- preparedStatement.setClob(index, Hibernate.createClob(stringWriter.getBuffer().toString()));\r
++// statement.setClob(index, Hibernate.createClob(stringWriter.getBuffer().toString())); //old version\r
++ StandardBasicTypes.CLOB.nullSafeSet(statement, stringWriter.getBuffer().toString(), index, session);\r
} catch (WSDLException e) {\r
throw new HibernateException(e);\r
}\r
}\r
}\r
\r
-- public Object replace(Object original, Object target, Object owner)\r
-- throws HibernateException {\r
-- return original;\r
-- }\r
--\r
++ \r
public Class returnedClass() {\r
return Definition.class;\r
}\r
\r
++\r
++ @Override\r
public int[] sqlTypes() {\r
-- return TYPES;\r
++ return SQL_TYPES;\r
}\r
\r
}\r
*/
package eu.etaxonomy.cdm.hibernate.search;
++import org.apache.log4j.Logger;
++import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.Field.TermVector;
*
*/
public class IdFieldOptions implements LuceneOptions {
--
++ private static final Logger logger = Logger.getLogger(IdFieldOptions.class);
++
@Override
public Store getStore() {
}
@Override
-- public Float getBoost() {
++ public float getBoost() {
return 1.0f;
}
++ @Override
++ public void addFieldToDocument(String arg0, String arg1, Document arg2) {
++ logger.warn("not yet implemented");
++ // TODO Auto-generated method stub
++
++ }
++
++ @Override
++ public void addNumericFieldToDocument(String arg0, Object arg1, Document arg2) {
++ logger.warn("not yet implemented");
++ // TODO Auto-generated method stub
++
++ }
++
++ @Override
++ public String indexNullAs() {
++ logger.warn("not yet implemented");
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ @Override
++ public boolean isCompressed() {
++ logger.warn("not yet implemented");
++ // TODO Auto-generated method stub
++ return false;
++ }
++
}
*/
package eu.etaxonomy.cdm.hibernate.search;
++import org.apache.log4j.Logger;
++import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.Field.TermVector;
*
*/
public class SortFieldOptions implements LuceneOptions {
--
--
++ private static final Logger logger = Logger.getLogger(SortFieldOptions.class);
++
@Override
public Store getStore() {
return Store.YES;
}
@Override
-- public Float getBoost() {
++ public float getBoost() {
return 1.0f;
}
++ @Override
++ public void addFieldToDocument(String arg0, String arg1, Document arg2) {
++ logger.warn("not yet implemented");
++ // TODO Auto-generated method stub
++
++ }
++
++ @Override
++ public void addNumericFieldToDocument(String arg0, Object arg1, Document arg2) {
++ logger.warn("not yet implemented");
++ // TODO Auto-generated method stub
++
++ }
++
++ @Override
++ public String indexNullAs() {
++ // TODO Auto-generated method stub
++ logger.warn("not yet implemented");
++ return null;
++ }
++
++ @Override
++ public boolean isCompressed() {
++ // TODO Auto-generated method stub
++ logger.warn("not yet implemented");
++ return false;
++ }
++
}
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.Transient;
--import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
@Embedded
@Merge(MergeMode.MERGE)
@Match(MatchMode.IGNORE)
-- @NotNull
private Contact contact;
/**
import java.util.List;
import java.util.Set;
++import javax.persistence.ElementCollection;
import javax.persistence.Embeddable;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
++import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
--import org.hibernate.annotations.CollectionOfElements;
import org.hibernate.envers.Audited;
--import eu.etaxonomy.cdm.common.CdmUtils;
import eu.etaxonomy.cdm.model.location.Point;
import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;
import eu.etaxonomy.cdm.strategy.merge.MergeException;
@Audited
public class Contact implements Serializable, Cloneable {
private static final long serialVersionUID = -1851305307069277625L;
-- @SuppressWarnings("unused")
private static final Logger logger = Logger.getLogger(Contact.class);
WaterbodyOrCountry country, String pobox, String region,
String email, String faxNumber, String phoneNumber, String url, Point location) {
Contact result = new Contact();
-- if (country != null || CdmUtils.isNotEmpty(locality) || CdmUtils.isNotEmpty(pobox) || CdmUtils.isNotEmpty(postcode) ||
-- CdmUtils.isNotEmpty(region) || CdmUtils.isNotEmpty(street) ){
++ if (country != null || StringUtils.isNotBlank(locality) || StringUtils.isNotBlank(pobox) || StringUtils.isNotBlank(postcode) ||
++ StringUtils.isNotBlank(region) || StringUtils.isNotBlank(street) ){
Address newAddress = Address.NewInstance(country, locality, pobox, postcode, region, street, location);
result.addAddress(newAddress);
}
@XmlElementWrapper(name = "EmailAddresses", nillable = true)
@XmlElement(name = "EmailAddress")
-- @CollectionOfElements(fetch = FetchType.LAZY)
++ @ElementCollection(fetch = FetchType.LAZY)
private List<String> emailAddresses;
@XmlElementWrapper(name = "URLs", nillable = true)
@XmlElement(name = "URL")
@XmlSchemaType(name = "anyURI")
-- @CollectionOfElements(fetch = FetchType.LAZY)
++ @ElementCollection(fetch = FetchType.LAZY)
private List<String> urls;
@XmlElementWrapper(name = "PhoneNumbers", nillable = true)
@XmlElement(name = "PhoneNumber")
-- @CollectionOfElements(fetch = FetchType.LAZY)
++ @ElementCollection(fetch = FetchType.LAZY)
private List<String> phoneNumbers;
@XmlElementWrapper(name = "FaxNumbers", nillable = true)
@XmlElement(name = "FaxNumber")
-- @CollectionOfElements(fetch = FetchType.LAZY)
++ @ElementCollection(fetch = FetchType.LAZY)
private List<String> faxNumbers;
@XmlElementWrapper(name = "Addresses", nillable = true)
public static final Logger logger = Logger.getLogger(Institution.class);
@XmlElement(name = "Code")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@NullOrNotEmpty
@Size(max = 255)
private String code;
@XmlElement(name = "Name")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@NullOrNotEmpty
@Size(max = 255)
private String name;
import java.util.HashSet;
import java.util.Set;
++import javassist.compiler.ast.Keyword;
++
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import org.springframework.beans.factory.annotation.Configurable;
import eu.etaxonomy.cdm.model.common.TimePeriod;
--import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.cdm.strategy.cache.agent.PersonDefaultCacheStrategy;
import eu.etaxonomy.cdm.strategy.match.Match;
import eu.etaxonomy.cdm.strategy.match.MatchMode;
public static final Logger logger = Logger.getLogger(Person.class);
@XmlElement(name = "Prefix")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES ) //TODO H42
@NullOrNotEmpty
@Size(max = 255)
private String prefix;
@XmlElement(name = "FirstName")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@NullOrNotEmpty
@Size(max = 255)
private String firstname;
@XmlElement(name = "LastName")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@NullOrNotEmpty
@Size(max = 255)
private String lastname;
@XmlElement(name = "Suffix")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@NullOrNotEmpty
@Size(max = 255)
private String suffix;
* @see #getLifespan()
*/
public void setLifespan(TimePeriod lifespan){
++ if (lifespan == null){
++ this.lifespan = TimePeriod.NewInstance(new Partial(), new Partial());
++ }
this.lifespan = lifespan;
}
import javax.xml.bind.annotation.XmlTransient;\r
import javax.xml.bind.annotation.XmlType;\r
\r
++import org.apache.commons.lang.StringUtils;\r
import org.apache.log4j.Logger;\r
import org.hibernate.envers.Audited;\r
import org.hibernate.search.annotations.Field;\r
import org.hibernate.search.annotations.Index;\r
import org.hibernate.search.annotations.Indexed;\r
\r
--import eu.etaxonomy.cdm.common.CdmUtils;\r
import eu.etaxonomy.cdm.strategy.cache.agent.INomenclaturalAuthorCacheStrategy;\r
import eu.etaxonomy.cdm.validation.annotation.NullOrNotEmpty;\r
\r
public static final Logger logger = Logger.getLogger(TeamOrPersonBase.class);\r
\r
@XmlElement(name="NomenclaturalTitle")\r
-- @Field(index=Index.TOKENIZED)\r
++ @Field(index=Index.YES) //TODO H42\r
@NullOrNotEmpty\r
@Size(max = 255)\r
protected String nomenclaturalTitle;\r
@Transient\r
public String getNomenclaturalTitle() {\r
String result = nomenclaturalTitle;\r
-- if (CdmUtils.isEmpty(nomenclaturalTitle) && (isGeneratingTitleCache == false)){\r
++ if (StringUtils.isBlank(nomenclaturalTitle) && (isGeneratingTitleCache == false)){\r
result = getTitleCache();\r
}\r
return result;\r
* @return\r
*/\r
protected String replaceEmptyTitleByNomTitle(String result) {\r
-- if (CdmUtils.isEmpty(result)){\r
++ if (StringUtils.isBlank(result)){\r
result = nomenclaturalTitle;\r
}\r
-- if (CdmUtils.isEmpty(result)){\r
++ if (StringUtils.isBlank(result)){\r
result = super.getTitleCache();\r
}\r
return result;\r
import org.apache.log4j.Logger;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
++import org.hibernate.envers.Audited;
import eu.etaxonomy.cdm.strategy.merge.Merge;
import eu.etaxonomy.cdm.strategy.merge.MergeMode;
"markers",
"annotations"
})
++@Audited
@MappedSuperclass
public abstract class AnnotatableEntity extends VersionableEntity implements IAnnotatableEntity {
private static final long serialVersionUID = 9151211842542443102L;
import org.apache.log4j.Logger;
import org.hibernate.annotations.NaturalId;
import org.hibernate.annotations.Type;
++import org.hibernate.envers.Audited;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Analyzer;
import org.hibernate.search.annotations.DocumentId;
import org.hibernate.search.annotations.Field;
@Match(MatchMode.IGNORE)
@NotNull
@Min(0)
++ @Audited
private int id;
@XmlAttribute(required = true)
@Column(length=36)
@Match(MatchMode.IGNORE)
@NotNull
-- @Field(store = Store.YES, index = Index.UN_TOKENIZED)
++ @Field(store = Store.YES, index = Index.YES, analyze = Analyze.NO) //TODO H42 (was Index.UN_TOKENIZED)
@FieldBridge(impl = UuidBridge.class)
++ @Audited
protected UUID uuid;
@XmlElement (name = "Created", type= String.class)
@Type(type="dateTimeUserType")
@Basic(fetch = FetchType.LAZY)
@Match(MatchMode.IGNORE)
-- @Field(index = Index.UN_TOKENIZED)
++ @Field(index = Index.YES, analyze = Analyze.NO) //TODO H42 (was Index.UN_TOKENIZED)
@FieldBridge(impl = DateTimeBridge.class)
++ @Audited
private DateTime created;
@XmlElement (name = "CreatedBy")
@XmlSchemaType(name = "IDREF")
@ManyToOne(fetch=FetchType.LAZY)
@Match(MatchMode.IGNORE)
++ @Audited
private User createdBy;
/**
private AgentBase actor;
@XmlElement(name = "Description")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
private String description;
\r
@XmlElement(name = "Name")\r
@NaturalId\r
-- @Field(index = Index.UN_TOKENIZED)\r
++ @Field(index=Index.YES) //TODO H42\r
protected String name;\r
\r
@XmlElementWrapper(name = "Members")\r
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.IndexColumn;
++import org.hibernate.envers.Audited;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.FieldBridge;
import org.hibernate.search.annotations.Fields;
import org.hibernate.search.annotations.Index;
--import org.hibernate.search.annotations.IndexedEmbedded;
import org.hibernate.search.annotations.Store;
import org.hibernate.validator.constraints.NotEmpty;
"credits",
"sources"
})
++@Audited
@MappedSuperclass
public abstract class IdentifiableEntity<S extends IIdentifiableEntityCacheStrategy> extends AnnotatableEntity
implements IIdentifiableEntity /*, ISourceable<IdentifiableSource> */ {
@Size(max = 255)
@Fields({
@Field(store=Store.YES),
-- @Field(name = "titleCache__sort", index = Index.UN_TOKENIZED, store=Store.YES)
++ @Field(name = "titleCache__sort", index = Index.YES, analyze = Analyze.NO, store=Store.YES) //TODO H42 was UN_TOKENIZED
})
@FieldBridge(impl=StripHtmlBridge.class)
protected String titleCache;
import java.util.HashMap;\r
import java.util.Map;\r
\r
++import javax.persistence.Column;\r
++import javax.persistence.ElementCollection;\r
import javax.persistence.Entity;\r
import javax.persistence.FetchType;\r
++import javax.persistence.MapKeyColumn;\r
++import javax.persistence.MapKeyJoinColumn;\r
import javax.persistence.Transient;\r
import javax.wsdl.Definition;\r
import javax.xml.bind.annotation.XmlAccessType;\r
import javax.xml.bind.annotation.XmlType;\r
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;\r
\r
--import org.hibernate.annotations.CollectionOfElements;\r
import org.hibernate.annotations.NaturalId;\r
import org.hibernate.annotations.Type;\r
import org.hibernate.annotations.TypeDef;\r
\r
@XmlElement(name = "Namespaces")\r
@XmlJavaTypeAdapter(NamespacesAdapter.class)\r
-- @CollectionOfElements(fetch = FetchType.LAZY)\r
-- private Map<String,Class<? extends IIdentifiableEntity>> namespaces = new HashMap<String,Class<? extends IIdentifiableEntity>>();\r
++ @ElementCollection(fetch = FetchType.LAZY)\r
++ @MapKeyColumn(name="namespaces_mapkey") //from hibernate 3, maybe changed in future to default "namespaces_key"\r
++ @Column(name="namespaces_element") //from hibernate 3, maybe changed in future to default "namespaces"\r
++ private Map<String,Class<? extends IIdentifiableEntity>> namespaces = new HashMap<String,Class<? extends IIdentifiableEntity>>();\r
\r
/**\r
-- * Hibernate requires a no-arguement constructor (this could be private, I suppose)\r
++ * Hibernate requires a no-arguement constructor\r
*/\r
private LSIDAuthority() { }\r
\r
* @return\r
*/\r
public boolean equals(Object o) {\r
-- if (!(o instanceof LSIDAuthority))\r
++ if (o == this){\r
++ return true;\r
++ }\r
++ if (!(o instanceof LSIDAuthority)){\r
return false;\r
++ }\r
LSIDAuthority auth = (LSIDAuthority)o;\r
-- return o.toString().equals(toString());\r
++ //is toString really good for equal?\r
++ //Waht about empty strings?\r
++ //AM\r
++ return auth.toString().equals(toString());\r
}\r
\r
/**\r
@XmlElement(name = "Text")
@XmlJavaTypeAdapter(FormattedTextAdapter.class)
@Column(length=65536)
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@FieldBridge(impl=StripHtmlBridge.class)
@Lob
protected String text;
import org.apache.log4j.Logger;
import org.hibernate.envers.Audited;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Index;
import org.hibernate.search.annotations.Indexed;
public static MarkerType NewInstance(String term, String label, String labelAbbrev){
return new MarkerType(term, label, labelAbbrev);
}
-
-
-
+
+
+
@XmlAttribute(name = "isTechnical")
-- @Field(index=Index.UN_TOKENIZED)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
private boolean isTechnical=false;
-
-
+
+
/**
* Constructor
* @param term
import java.util.List;
--import org.hibernate.collection.PersistentMap;
--import org.hibernate.engine.SessionImplementor;
++import org.hibernate.collection.internal.PersistentMap;
++import org.hibernate.engine.spi.SessionImplementor;
public class PersistentMultiLanguageText extends PersistentMap implements IMultiLanguageText {
super();
}
++ /* (non-Javadoc)
++ * @see eu.etaxonomy.cdm.model.common.IMultiLanguageText#add(eu.etaxonomy.cdm.model.common.LanguageString)
++ */
@Deprecated
public LanguageString add(LanguageString languageString) {
if (languageString == null){
import java.util.Map;
import org.hibernate.HibernateException;
--import org.hibernate.collection.PersistentCollection;
--import org.hibernate.engine.SessionImplementor;
++import org.hibernate.collection.spi.PersistentCollection;
++import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.persister.collection.CollectionPersister;
import org.hibernate.usertype.UserCollectionType;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.envers.Audited;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Index;
import org.hibernate.search.annotations.Indexed;
private static final Logger logger = Logger.getLogger(RelationshipTermBase.class);
@XmlElement(name = "Symmetrical")
-- @Field(index=Index.UN_TOKENIZED)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@Column(name="symmetrical") //to be compatible with PostGreSQL
private boolean symmetric;
@XmlElement(name = "Transitive")
-- @Field(index=Index.UN_TOKENIZED)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
private boolean transitive;
@XmlElementWrapper(name = "InverseRepresentations")
private static final Logger logger = Logger.getLogger(Representation.class);
@XmlElement(name = "Label")
-- @Field(index=Index.TOKENIZED, store=Store.YES)
++ @Field(index=Index.YES, store=Store.YES) //TODO H42
private String label;
@XmlElement(name = "AbbreviatedLabel")
-- @Field(index=Index.TOKENIZED, store=Store.YES)
++ @Field(index=Index.YES, store=Store.YES) //TODO H42
private String abbreviatedLabel;
/**
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Type;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
--import org.hibernate.search.annotations.IndexedEmbedded;
import org.hibernate.validator.constraints.Length;
import eu.etaxonomy.cdm.model.description.FeatureTree;
import eu.etaxonomy.cdm.model.description.TextData;
++import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
import eu.etaxonomy.cdm.strategy.cache.common.TermDefaultCacheStrategy;
import eu.etaxonomy.cdm.validation.annotation.NullOrNotEmpty;
FeatureTree.class
})
@MappedSuperclass
--public abstract class TermBase extends IdentifiableEntity{
++public abstract class TermBase extends IdentifiableEntity<IIdentifiableEntityCacheStrategy >{
private static final long serialVersionUID = 1471561531632115822L;
@SuppressWarnings("unused")
private static final Logger logger = Logger.getLogger(TermBase.class);
@XmlElement(name = "URI")
-- @Field(index=org.hibernate.search.annotations.Index.UN_TOKENIZED)
-- @NullOrNotEmpty
-- @Length(max = 255)
++ @Field(index=org.hibernate.search.annotations.Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@Type(type="uriUserType")
private URI uri;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Type;
import org.hibernate.envers.Audited;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
++import org.hibernate.search.annotations.Index;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.annotations.IndexedEmbedded;
import org.hibernate.validator.constraints.Length;
// Software can go and grap these terms incl labels and description.
// UUID needed? Further vocs can be setup through our own ontology.
@XmlElement(name = "TermSourceURI")
-- @Field(index=org.hibernate.search.annotations.Index.UN_TOKENIZED)
-- @Length(max = 255)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@Type(type="uriUserType")
private URI termSourceUri;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
--import org.apache.commons.lang.time.DateUtils;
import org.apache.log4j.Logger;
import org.hibernate.annotations.Type;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.FieldBridge;
import org.joda.time.DateTime;
@XmlElement(name = "Start")
@XmlJavaTypeAdapter(value = PartialAdapter.class)
@Type(type="partialUserType")
-- @Field(index = org.hibernate.search.annotations.Index.UN_TOKENIZED)
++ @Field(index = org.hibernate.search.annotations.Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@FieldBridge(impl = PartialBridge.class)
private Partial start;
@XmlElement(name = "End")
@XmlJavaTypeAdapter(value = PartialAdapter.class)
@Type(type="partialUserType")
-- @Field(index = org.hibernate.search.annotations.Index.UN_TOKENIZED)
++ @Field(index = org.hibernate.search.annotations.Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@FieldBridge(impl = PartialBridge.class)
private Partial end;
import org.hibernate.envers.NotAudited;\r
\r
\r
++import org.hibernate.search.annotations.Analyze;\r
import org.hibernate.search.annotations.Field;\r
import org.hibernate.search.annotations.Index;\r
import org.hibernate.search.annotations.Indexed;\r
\r
@XmlElement(name = "Username")\r
@NaturalId\r
-- @Field(index = Index.UN_TOKENIZED)\r
++ @Field(index = Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED\r
protected String username;\r
\r
/**\r
import org.apache.log4j.Logger;
import org.hibernate.annotations.Type;
++import org.hibernate.envers.Audited;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.FieldBridge;
import org.joda.time.DateTime;
"updatedBy"
})
@XmlJavaTypeAdapter(value=DateTimeAdapter.class,type=DateTime.class)
++@Audited
@MappedSuperclass
public abstract class VersionableEntity extends CdmBase implements IVersionableEntity{
private static final long serialVersionUID = 1409299200302758513L;
@Type(type="dateTimeUserType")
@Basic(fetch = FetchType.LAZY)
@Match(MatchMode.IGNORE)
-- @Field(index = org.hibernate.search.annotations.Index.UN_TOKENIZED)
++ @Field(index = org.hibernate.search.annotations.Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@FieldBridge(impl = DateTimeBridge.class)
private DateTime updated;
\r
\r
@org.hibernate.annotations.TypeDefs( { \r
-- @org.hibernate.annotations.TypeDef(name="persistentDuration", typeClass=org.joda.time.contrib.hibernate.PersistentDuration.class),\r
-- @org.hibernate.annotations.TypeDef(name="dateTimeUserType", typeClass=org.joda.time.contrib.hibernate.PersistentDateTime.class),\r
++ //TODO needed ??\r
++ @org.hibernate.annotations.TypeDef(name="persistentDuration", typeClass=org.jadira.usertype.dateandtime.joda.PersistentDurationAsString.class), \r
++ @org.hibernate.annotations.TypeDef(name="dateTimeUserType", typeClass=org.jadira.usertype.dateandtime.joda.PersistentDateTime.class),\r
@org.hibernate.annotations.TypeDef(name="partialUserType", typeClass=eu.etaxonomy.cdm.hibernate.PartialUserType.class),\r
@org.hibernate.annotations.TypeDef(name="uuidUserType", typeClass=eu.etaxonomy.cdm.hibernate.UUIDUserType.class),\r
@org.hibernate.annotations.TypeDef(name="uriUserType", typeClass=eu.etaxonomy.cdm.hibernate.URIUserType.class)\r
private static final Logger logger = Logger.getLogger(CommonTaxonName.class);
@XmlElement(name = "Name")
-- @Field(index = Index.TOKENIZED, store=Store.YES)
++ @Field(index = Index.YES, store=Store.YES) //TODO H42
private String name;
@XmlElement(name = "Language")
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
++import javax.persistence.MapKeyJoinColumn;
import javax.persistence.OneToMany;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@XmlJavaTypeAdapter(MultilanguageTextAdapter.class)
@OneToMany(fetch = FetchType.LAZY)
@JoinTable(name = "DescriptionElementBase_ModifyingText")
++ @MapKeyJoinColumn(name="modifyingtext_mapkey_id")
@Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE})
@IndexedEmbedded
private Map<Language,LanguageString> modifyingText = new HashMap<Language,LanguageString>();
import javax.persistence.FetchType;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
++import javax.persistence.MapKeyJoinColumn;
import javax.persistence.OneToMany;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@XmlElement(name = "Description")
@XmlJavaTypeAdapter(MultilanguageTextAdapter.class)
@OneToMany(fetch = FetchType.LAZY)
-- @Cascade({CascadeType.SAVE_UPDATE,CascadeType.MERGE, CascadeType.DELETE, CascadeType.DELETE_ORPHAN })
++ @MapKeyJoinColumn(name="description_mapkey_id")
++ @Cascade({CascadeType.SAVE_UPDATE,CascadeType.MERGE, CascadeType.DELETE, CascadeType.DELETE_ORPHAN })
@JoinTable(name = "IndividualAssociation_LanguageString")
private Map<Language,LanguageString> description = new HashMap<Language,LanguageString>();
\r
import javax.persistence.Entity;\r
import javax.persistence.FetchType;\r
++import javax.persistence.MapKeyJoinColumn;\r
import javax.persistence.OneToMany;\r
import javax.xml.bind.annotation.XmlAccessType;\r
import javax.xml.bind.annotation.XmlAccessorType;\r
@XmlElement(name = "MultiLanguageText")\r
@XmlJavaTypeAdapter(MultilanguageTextAdapter.class)\r
@OneToMany (fetch= FetchType.LAZY)\r
++ @MapKeyJoinColumn(name="label_mapkey_id")\r
@Cascade({CascadeType.SAVE_UPDATE,CascadeType.MERGE, CascadeType.DELETE, CascadeType.DELETE_ORPHAN })\r
// @IndexedEmbedded\r
private Map<Language, LanguageString> label = new HashMap<Language, LanguageString>();\r
import javax.xml.bind.annotation.XmlSchemaType;\r
import javax.xml.bind.annotation.XmlType;\r
\r
++import org.apache.commons.lang.StringUtils;\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.hibernate.search.annotations.Indexed;\r
--import org.hibernate.tool.hbm2x.StringUtils;\r
\r
import eu.etaxonomy.cdm.common.CdmUtils;\r
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
result += otherNodeString + separator;\r
}\r
\r
-- result = StringUtils.chompLast(result, separator);\r
++ result = StringUtils.chomp(result, separator);\r
result += "\n";\r
}\r
}\r
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
++import javax.persistence.MapKeyJoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Transient;
@XmlJavaTypeAdapter(MultilanguageTextAdapter.class)
@OneToMany(fetch = FetchType.LAZY)
// @JoinTable(name = "DescriptionElementBase_ModifyingText")
-- @Cascade({ CascadeType.SAVE_UPDATE, CascadeType.MERGE })
++ @MapKeyJoinColumn(name="modifyingtext_mapkey_id")
++ @Cascade({ CascadeType.SAVE_UPDATE, CascadeType.MERGE })
private Map<Language, LanguageString> modifyingText = new HashMap<Language, LanguageString>();
public static final Integer ROOT_NODE_NUMBER = 1;
import javax.persistence.FetchType;\r
import javax.persistence.ManyToMany;\r
import javax.persistence.ManyToOne;\r
++import javax.persistence.MapKeyJoinColumn;\r
import javax.persistence.OneToMany;\r
import javax.validation.constraints.NotNull;\r
import javax.xml.bind.annotation.XmlAccessType;\r
@XmlElement(name = "ModifyingText")\r
@XmlJavaTypeAdapter(MultilanguageTextAdapter.class)\r
@OneToMany(fetch = FetchType.LAZY)\r
++ @MapKeyJoinColumn(name="modifyingtext_mapkey_id")\r
@Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE})\r
@Field(name="modifyingText")\r
@FieldBridge(impl=MultilanguageTextFieldBridge.class)\r
import javax.persistence.FetchType;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
++import javax.persistence.MapKeyJoinColumn;
import javax.persistence.OneToMany;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@XmlElement(name = "Description")
@XmlJavaTypeAdapter(MultilanguageTextAdapter.class)
@OneToMany(fetch = FetchType.LAZY)
++ @MapKeyJoinColumn(name="description_mapkey_id")
@JoinTable(name = "TaxonInteraction_LanguageString")
@Cascade({CascadeType.SAVE_UPDATE,CascadeType.MERGE, CascadeType.DELETE, CascadeType.DELETE_ORPHAN })
private Map<Language,LanguageString> description = new HashMap<Language,LanguageString>();
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
++import javax.persistence.MapKeyJoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
@XmlElement(name = "MultiLanguageText")
@XmlJavaTypeAdapter(MultilanguageTextAdapter.class)
@OneToMany (fetch= FetchType.LAZY)
++ @MapKeyJoinColumn(name="multilanguagetext_mapkey_id")
@Cascade({CascadeType.SAVE_UPDATE,CascadeType.MERGE, CascadeType.DELETE, CascadeType.DELETE_ORPHAN })
@Field(name="text", store=Store.YES)
@FieldBridge(impl=MultilanguageTextFieldBridge.class)
import javax.persistence.InheritanceType;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
++import javax.persistence.MapKeyJoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.common.MultilanguageText;
++import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
import eu.etaxonomy.cdm.strategy.cache.media.MediaDefaultCacheStrategy;
import eu.etaxonomy.cdm.validation.Level2;
@Indexed
@Audited
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
--public class Media extends IdentifiableEntity implements Cloneable, IMultiLanguageTextHolder {
++public class Media extends IdentifiableEntity<IIdentifiableEntityCacheStrategy> implements Cloneable, IMultiLanguageTextHolder {
private static final long serialVersionUID = -1927421567263473658L;
@SuppressWarnings("unused")
private static final Logger logger = Logger.getLogger(Media.class);
@XmlElement(name = "MediaTitle")
@XmlJavaTypeAdapter(MultilanguageTextAdapter.class)
@OneToMany(fetch = FetchType.LAZY)
++ @MapKeyJoinColumn(name="title_mapkey_id")
@IndexedEmbedded
@Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE,CascadeType.DELETE, CascadeType.DELETE_ORPHAN, CascadeType.REFRESH})
@NotNull
@XmlElement(name = "MediaDescription")
@XmlJavaTypeAdapter(MultilanguageTextAdapter.class)
@OneToMany(fetch = FetchType.LAZY)
-- @IndexedEmbedded
++ @MapKeyJoinColumn(name="description_mapkey_id")
@JoinTable(name = "Media_Description")
@Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE,CascadeType.DELETE,CascadeType.DELETE_ORPHAN, CascadeType.REFRESH})
++ @IndexedEmbedded
@NotNull
private Map<Language,LanguageString> description = new HashMap<Language,LanguageString>();
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Type;
import org.hibernate.envers.Audited;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
import org.hibernate.validator.constraints.Length;
//external location of copyright text
@XmlElement(name = "URI")
-- @Field(index=org.hibernate.search.annotations.Index.UN_TOKENIZED)
-- @NullOrNotEmpty
-- @Length(max = 255)
-- @Pattern(regexp = "^([a-z0-9+.-]+):(?://(?:((?:[a-z0-9-._~!$&'()*+,;=:]|%[0-9A-F]{2})*)@)?((?:[a-z0-9-._~!$&'()*+,;=]|%[0-9A-F]{2})*)(?::(\\d*))?(/(?:[a-z0-9-._~!$&'()*+,;=:@/]|%[0-9A-F]{2})*)?|(/?(?:[a-z0-9-._~!$&'()*+,;=:@]|%[0-9A-F]{2})+(?:[a-z0-9-._~!$&'()*+,;=:@/]|%[0-9A-F]{2})*)?)(?:\\?((?:[a-z0-9-._~!$&'()*+,;=:/?@]|%[0-9A-F]{2})*))?(?:#((?:[a-z0-9-._~!$&'()*+,;=:/?@]|%[0-9A-F]{2})*))?$", groups = Level2.class, message = "{eu.etaxonomy.cdm.model.reference.Reference.uri.message}")
++ @Field(index=org.hibernate.search.annotations.Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@Type(type="uriUserType")
private URI uri;
import org.apache.log4j.Logger;
import org.hibernate.annotations.Type;
import org.hibernate.envers.Audited;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
import org.hibernate.validator.constraints.Length;
private String accessionNumber;
@XmlElement(name = "URI")
-- @Field(index=org.hibernate.search.annotations.Index.UN_TOKENIZED)
-- @NullOrNotEmpty
-- @Length(max = 255)
-- @Pattern(regexp = "^([a-z0-9+.-]+):(?://(?:((?:[a-z0-9-._~!$&'()*+,;=:]|%[0-9A-F]{2})*)@)?((?:[a-z0-9-._~!$&'()*+,;=]|%[0-9A-F]{2})*)(?::(\\d*))?(/(?:[a-z0-9-._~!$&'()*+,;=:@/]|%[0-9A-F]{2})*)?|(/?(?:[a-z0-9-._~!$&'()*+,;=:@]|%[0-9A-F]{2})+(?:[a-z0-9-._~!$&'()*+,;=:@/]|%[0-9A-F]{2})*)?)(?:\\?((?:[a-z0-9-._~!$&'()*+,;=:/?@]|%[0-9A-F]{2})*))?(?:#((?:[a-z0-9-._~!$&'()*+,;=:/?@]|%[0-9A-F]{2})*))?$", groups = Level2.class, message = "{eu.etaxonomy.cdm.model.reference.Reference.uri.message}")
++ @Field(index=org.hibernate.search.annotations.Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@Type(type="uriUserType")
private URI uri;
//Author team and year of the subgenus name
@XmlElement(name = "SubGenusAuthorship")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
private String subGenusAuthorship;
//Approbation of name according to approved list, validation list, or validly published, paper in IJSB after 1980
@XmlElement(name = "NameApprobation")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
private String nameApprobation;
// ************* CONSTRUCTORS *************/
@Configurable
public class BotanicalName extends NonViralName<BotanicalName> implements Cloneable /*, IMergable*/ {
private static final long serialVersionUID = 6818651572463497727L;
++ @SuppressWarnings("unused")
private static final Logger logger = Logger.getLogger(BotanicalName.class);
//Only for fungi: to indicate that the type of the name is asexual or not
@XmlElement(name ="IsAnamorphic")
private boolean anamorphic;
-- static private INonViralNameParser nameParser = new NonViralNameParserImpl();
++ static private INonViralNameParser<?> nameParser = new NonViralNameParserImpl();
// ************* CONSTRUCTORS *************/
//needed by hibernate
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Target;
import org.hibernate.envers.Audited;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Fields;
import org.hibernate.search.annotations.Index;
private static final Logger logger = Logger.getLogger(NonViralName.class);
@XmlElement(name = "NameCache")
-- @Fields({@Field(name = "nameCache_tokenized",index = org.hibernate.search.annotations.Index.TOKENIZED),
-- @Field(index = org.hibernate.search.annotations.Index.UN_TOKENIZED)
++ @Fields({@Field(name = "nameCache_tokenized",index = org.hibernate.search.annotations.Index.YES), //TODO H42
++ @Field(index = Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
})
@Match(value=MatchMode.CACHE, cacheReplaceMode=ReplaceMode.DEFINED,
cacheReplacedProperties={"genusOrUninomial", "infraGenericEpithet", "specificEpithet", "infraSpecificEpithet"} )
protected boolean protectedNameCache;
@XmlElement(name = "GenusOrUninomial")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@Match(MatchMode.EQUAL_REQUIRED)
@CacheUpdate("nameCache")
@NullOrNotEmpty
private String genusOrUninomial;
@XmlElement(name = "InfraGenericEpithet")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@CacheUpdate("nameCache")
@NullOrNotEmpty
@Size(max = 255)
private String infraGenericEpithet;
@XmlElement(name = "SpecificEpithet")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@CacheUpdate("nameCache")
@NullOrNotEmpty
@Size(max = 255)
private String specificEpithet;
@XmlElement(name = "InfraSpecificEpithet")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@CacheUpdate("nameCache")
@NullOrNotEmpty
@Size(max = 255)
private INomenclaturalAuthor exBasionymAuthorTeam;
@XmlElement(name = "AuthorshipCache")
-- @Fields({@Field(name = "authorshipCache_tokenized",index = org.hibernate.search.annotations.Index.TOKENIZED),
-- @Field(index = org.hibernate.search.annotations.Index.UN_TOKENIZED)
++ @Fields({@Field(name = "authorshipCache_tokenized",index = org.hibernate.search.annotations.Index.YES), //TODO H42
++ @Field(index = Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
})
@Match(value=MatchMode.CACHE, cacheReplaceMode=ReplaceMode.DEFINED,
cacheReplacedProperties={"combinationAuthorTeam", "basionymAuthorTeam", "exCombinationAuthorTeam", "exBasionymAuthorTeam"} )
if (protectedAuthorshipCache == false){
String oldCache = this.authorshipCache;
String newCache = this.getAuthorshipCache();
-- if ( (oldCache == null && newCache != null) || ! oldCache.equals(newCache)){
++ if ( (oldCache == null && newCache != null) || CdmUtils.nullSafeEqual(oldCache,newCache)){
this.setAuthorshipCache(this.getAuthorshipCache(), false);
}
}
private Set<TaxonNameDescription> descriptions = new HashSet<TaxonNameDescription>();
@XmlElement(name = "AppendedPhrase")
-- @Field(index= org.hibernate.search.annotations.Index.TOKENIZED)
++ @Field(index= org.hibernate.search.annotations.Index.YES) //TODO H42
@CacheUpdate(value ="nameCache")
@NullOrNotEmpty
@Size(max = 255)
private String appendedPhrase;
@XmlElement(name = "NomenclaturalMicroReference")
-- @Field(index= org.hibernate.search.annotations.Index.TOKENIZED)
++ @Field(index= org.hibernate.search.annotations.Index.YES) //TODO H42
@CacheUpdate(noUpdate ="titleCache")
@NullOrNotEmpty
@Size(max = 255)
// protected INameCacheStrategy<ViralName> cacheStrategy;
@XmlElement(name = "Acronym")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@NullOrNotEmpty
@Length(max = 255)
private String acronym;
import org.apache.log4j.Logger;
import org.hibernate.envers.Audited;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Index;
import org.hibernate.search.annotations.Indexed;
//Name of the breed of an animal
@XmlElement(name = "Breed")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@NullOrNotEmpty
@Length(max = 255)
private String breed;
@XmlElement(name = "PublicationYear")
-- @Field(index=Index.UN_TOKENIZED)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@CacheUpdate(value ="authorshipCache")
@Min(0)
private Integer publicationYear;
@XmlElement(name = "OriginalPublicationYear")
-- @Field(index=Index.UN_TOKENIZED)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@CacheUpdate(value ="authorshipCache")
@Min(0)
private Integer originalPublicationYear;
import org.apache.log4j.Logger;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
--import org.hibernate.annotations.Index;
import org.hibernate.annotations.Table;
import org.hibernate.envers.Audited;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
++import org.hibernate.search.annotations.Index;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.annotations.IndexedEmbedded;
import org.hibernate.validator.constraints.Length;
import eu.etaxonomy.cdm.model.agent.Institution;
import eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity;
import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
--import eu.etaxonomy.cdm.strategy.cache.common.IdentifiableEntityDefaultCacheStrategy;
import eu.etaxonomy.cdm.strategy.cache.occurrence.CollectionDefaultCacheStrategy;
import eu.etaxonomy.cdm.validation.annotation.NullOrNotEmpty;
@Indexed(index = "eu.etaxonomy.cdm.model.occurrence.Collection")
@Audited
@Configurable
--@Table(appliesTo="Collection", indexes = { @Index(name = "collectionTitleCacheIndex", columnNames = { "titleCache" }) })
++@Table(appliesTo="Collection", indexes = { @org.hibernate.annotations.Index(name = "collectionTitleCacheIndex", columnNames = { "titleCache" }) })
public class Collection extends IdentifiableMediaEntity<IIdentifiableEntityCacheStrategy<Collection>> implements Cloneable{
private static final long serialVersionUID = -7833674897174732255L;
private static final Logger logger = Logger.getLogger(Collection.class);
@XmlElement(name = "Code")
-- @Field(index=org.hibernate.search.annotations.Index.UN_TOKENIZED)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@NullOrNotEmpty
@Length(max = 255)
private String code;
@XmlElement(name = "CodeStandard")
-- @Field(index=org.hibernate.search.annotations.Index.UN_TOKENIZED)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@NullOrNotEmpty
@Length(max = 255)
private String codeStandard;
@XmlElement(name = "Name")
-- @Field(index=org.hibernate.search.annotations.Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@NullOrNotEmpty
@Length(max = 255)
private String name;
@XmlElement(name = "TownOrLocation")
-- @Field(index=org.hibernate.search.annotations.Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@NullOrNotEmpty
@Length(max = 255)
private String townOrLocation;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.envers.Audited;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Index;
import org.hibernate.search.annotations.Indexed;
private Collection collection;
@XmlElement(name = "CatalogNumber")
-- @Field(index=Index.UN_TOKENIZED)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@NullOrNotEmpty
@Length(max = 255)
private String catalogNumber;
@XmlElement(name = "AccessionNumber")
-- @Field(index=Index.UN_TOKENIZED)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@NullOrNotEmpty
@Length(max = 255)
private String accessionNumber;
@XmlElement(name = "CollectorsNumber")
-- @Field(index=Index.UN_TOKENIZED)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@NullOrNotEmpty
@Length(max = 255)
private String collectorsNumber;
@XmlElement(name = "Barcode")
-- @Field(index=Index.UN_TOKENIZED)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@NullOrNotEmpty
@Length(max = 255)
private String barcode;
private static final Logger logger = Logger.getLogger(FieldObservation.class);
@XmlElement(name = "FieldNumber")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@NullOrNotEmpty
@Length(max = 255)
private String fieldNumber;
private Person primaryCollector;
@XmlElement(name = "FieldNotes")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@NullOrNotEmpty
@Length(max = 255)
private String fieldNotes;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.envers.Audited;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Index;
import org.hibernate.search.annotations.Indexed;
private Set<NamedArea> collectingAreas = new HashSet<NamedArea>();
@XmlElement(name = "CollectingMethod")
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@NullOrNotEmpty
@Length(max = 255)
private String collectingMethod;
// meter above/below sea level of the surface
@XmlElement(name = "AbsoluteElevation")
-- @Field(index=Index.UN_TOKENIZED)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
private Integer absoluteElevation;
@XmlElement(name = "AbsoluteElevationError")
-- @Field(index=Index.UN_TOKENIZED)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
private Integer absoluteElevationError;
// distance in meter from the ground surface when collecting. E.g. 10m below the ground or 10m above the ground/bottom of a lake or 20m up in the canope
@XmlElement(name = "DistanceToGround")
-- @Field(index=Index.UN_TOKENIZED)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
private Integer distanceToGround;
// distance in meters to lake or sea surface. Similar to distanceToGround use negative integers for distance *below* the surface, ie under water
@XmlElement(name = "DistanceToWaterSurface")
-- @Field(index=Index.UN_TOKENIZED)
++ @Field(index=Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
private Integer distanceToWaterSurface;
/**
@XmlElement(name = "Exsiccatum")
@NullOrNotEmpty
-- @Field(index=Index.TOKENIZED)
++ @Field(index=Index.YES) //TODO H42
@Size(max = 255)
private String exsiccatum;
import javax.persistence.InheritanceType;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
++import javax.persistence.MapKeyJoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Transient;
import javax.validation.constraints.Min;
import org.hibernate.annotations.Index;
import org.hibernate.annotations.Table;
import org.hibernate.envers.Audited;
++import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.IndexedEmbedded;
private Stage lifeStage;
@XmlElement(name = "IndividualCount")
-- @Field(index=org.hibernate.search.annotations.Index.UN_TOKENIZED)
++ @Field(index=org.hibernate.search.annotations.Index.YES, analyze = Analyze.NO) //TODO H42 was UN_TOKENIZED
@Min(0)
private Integer individualCount;
@XmlElement(name = "Description")
@XmlJavaTypeAdapter(MultilanguageTextAdapter.class)
@OneToMany(fetch = FetchType.LAZY)
-- @Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE, CascadeType.DELETE_ORPHAN})
++ @MapKeyJoinColumn(name="definition_mapkey_id")
++ @Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE, CascadeType.DELETE_ORPHAN})
@IndexedEmbedded
@NotNull
protected Map<Language,LanguageString> definition = new HashMap<Language,LanguageString>();
import org.hibernate.annotations.Table;\r
import org.hibernate.annotations.Type;\r
import org.hibernate.envers.Audited;\r
++import org.hibernate.search.annotations.Analyze;\r
import org.hibernate.search.annotations.Field;\r
import org.hibernate.search.annotations.Index;\r
import org.hibernate.search.annotations.IndexedEmbedded;\r
@XmlElement(name ="Title" )\r
@Column(length=4096, name="title")\r
@Lob\r
-- @Field(index=Index.TOKENIZED)\r
++ @Field(index=Index.YES) //TODO H42\r
@Match(MatchMode.EQUAL_REQUIRED)\r
@NullOrNotEmpty\r
@Length(max = 4096)\r
\r
\r
@XmlElement(name = "Editor")\r
-- @Field(index=Index.TOKENIZED)\r
++ @Field(index=Index.YES) //TODO H42\r
@NullOrNotEmpty\r
@Length(max = 255)\r
protected String editor;\r
\r
@XmlElement(name = "Series")\r
-- @Field(index=Index.TOKENIZED)\r
++ @Field(index=Index.YES) //TODO H42\r
@NullOrNotEmpty\r
@Length(max = 255)\r
protected String series;\r
\r
@XmlElement(name = "Volume")\r
-- @Field(index=Index.TOKENIZED)\r
++ @Field(index=Index.YES) //TODO H42\r
@NullOrNotEmpty\r
@Length(max = 255)\r
protected String volume;\r
\r
@XmlElement(name = "Pages")\r
-- @Field(index=Index.TOKENIZED)\r
++ @Field(index=Index.YES) //TODO H42\r
@NullOrNotEmpty\r
@Length(max = 255)\r
protected String pages;\r
\r
@XmlElement(name = "Edition")\r
-- @Field(index=Index.TOKENIZED)\r
++ @Field(index=Index.YES) //TODO H42\r
@NullOrNotEmpty\r
@Length(max = 255)\r
protected String edition;\r
\r
@XmlElement(name = "ISBN")\r
-- @Field(index=Index.TOKENIZED)\r
++ @Field(index=Index.YES) //TODO H42\r
@NullOrNotEmpty\r
@Length(max = 255)\r
@Pattern(regexp = "(?=.{13}$)\\d{1,5}([- ])\\d{1,7}\\1\\d{1,6}\\1(\\d|X)$", groups = Level2.class, message = "{eu.etaxonomy.cdm.model.reference.Reference.isbn.message}") \r
protected String isbn;\r
\r
@XmlElement(name = "ISSN")\r
-- @Field(index=Index.TOKENIZED)\r
++ @Field(index=Index.YES) //TODO H42\r
@NullOrNotEmpty\r
@Length(max = 255)\r
@Pattern(regexp = "(?=.{9}$)\\d{4}([- ])\\d{4} (\\d|X)$", groups = Level2.class, message = "{eu.etaxonomy.cdm.model.reference.Reference.issn.message}") \r
protected String issn;\r
\r
@XmlElement(name = "SeriesPart")\r
-- @Field(index=Index.TOKENIZED)\r
++ @Field(index=Index.YES) //TODO H42\r
@NullOrNotEmpty\r
@Length(max = 255)\r
protected String seriesPart;\r
\r
@XmlElement(name = "Organization")\r
-- @Field(index=Index.TOKENIZED)\r
++ @Field(index=Index.YES) //TODO H42\r
@NullOrNotEmpty\r
@Length(max = 255)\r
protected String organization;\r
\r
@XmlElement(name = "Publisher")\r
-- @Field(index=Index.TOKENIZED)\r
++ @Field(index=Index.YES) //TODO H42\r
@NullOrNotEmpty\r
@Length(max = 255)\r
protected String publisher;\r
\r
\r
@XmlElement(name = "PlacePublished")\r
-- @Field(index=Index.TOKENIZED)\r
++ @Field(index=Index.YES) //TODO H42\r
@NullOrNotEmpty\r
@Length(max = 255)\r
protected String placePublished;\r
@XmlElement(name ="Abstract" )\r
@Column(length=65536, name="referenceAbstract")\r
@Lob\r
-- @Field(index=Index.TOKENIZED)\r
++ @Field(index=Index.YES) //TODO H42\r
@NullOrNotEmpty\r
@Length(max = 65536)\r
private String referenceAbstract; //abstract is a reserved term in Java\r
\r
//URIs like DOIs, LSIDs or Handles for this reference\r
@XmlElement(name = "URI")\r
-- @Field(index=org.hibernate.search.annotations.Index.UN_TOKENIZED)\r
++ @Field(index=Index.YES, analyze = Analyze.NO) // TODO H42 was UN_TOKENIZED\r
@Type(type="uriUserType")\r
private URI uri;\r
\r
authorPart = getAuthorAndExAuthor(combinationAuthor, exCombinationAuthor);\r
}\r
result = CdmUtils.concat(BasionymAuthorCombinationAuthorSeperator, basionymPart, authorPart);\r
++ if ("".equals(result)){\r
++ result = null;\r
++ }\r
return result;\r
}\r
\r
authorPart = CdmUtils.concat(AuthorYearSeperator, authorAndEx, publicationYearString);\r
}\r
result = CdmUtils.concat(BasionymAuthorCombinationAuthorSeperator, basionymPart, authorPart);\r
++ if ("".equals(result)){\r
++ result = null;\r
++ }\r
return result;\r
}\r
\r
@Constraint(validatedBy = BasionymsMustShareEpithetsAndAuthorsValidator.class)\r
@Documented\r
public @interface BasionymsMustShareEpithetsAndAuthors {\r
++ \r
String message() default "{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.message}";\r
++ \r
Class<? extends Payload>[] payload() default {};\r
++ \r
Class<?>[] groups() default {};\r
}\r
@Constraint(validatedBy = ChildTaxaMustBeLowerRankThanParentValidator.class)\r
@Documented\r
public @interface ChildTaxaMustBeLowerRankThanParent {\r
++ \r
String message() default "{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustBeLowerRankThanParent.message}";\r
++ \r
Class<? extends Payload>[] payload() default {};\r
++ \r
Class<?>[] groups() default {};\r
}\r
@Constraint(validatedBy = ChildTaxaMustDeriveNameFromParentValidator.class)\r
@Documented\r
public @interface ChildTaxaMustDeriveNameFromParent {\r
++ \r
String message() default "{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustDeriveNameFromParent.message}";\r
++ \r
Class<? extends Payload>[] payload() default {};\r
++ \r
Class<?>[] groups() default {};\r
}\r
@Constraint(validatedBy = ChildTaxaMustNotSkipRanksValidator.class)\r
@Documented\r
public @interface ChildTaxaMustNotSkipRanks {\r
++ \r
String message() default "{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustNotSkipRanks.message}";\r
++ \r
Class<? extends Payload>[] payload() default {};\r
++ \r
Class<?>[] groups() default {};\r
}\r
@Constraint(validatedBy = CorrectEpithetsForRankValidator.class)\r
@Documented\r
public @interface CorrectEpithetsForRank {\r
--String message() default "{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.message}";\r
--Class<? extends Payload>[] payload() default {};\r
--Class<?>[] groups() default {};\r
++ \r
++ String message() default "{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.message}";\r
++ \r
++ Class<? extends Payload>[] payload() default {};\r
++ \r
++ Class<?>[] groups() default {};\r
}\r
@Constraint(validatedBy = HomotypicSynonymsShouldBelongToGroupValidator.class)\r
@Documented\r
public @interface HomotypicSynonymsShouldBelongToGroup {\r
++ \r
String message() default "{eu.etaxonomy.cdm.validation.annotation.HomotypicSynonymsShouldBelongToGroup.message}";\r
++ \r
Class<? extends Payload>[] payload() default {};\r
++ \r
Class<?>[] groups() default {};\r
}\r
@Constraint(validatedBy = InReferenceValidator.class)\r
@Documented\r
public @interface InReference {\r
++ \r
String message() default "{eu.etaxonomy.cdm.validation.annotation.InReference.wrongInReferenceForReferenceType.message}";\r
++ \r
Class<? extends Payload>[] payload() default {};\r
++ \r
Class<?>[] groups() default {};\r
--\r
}\r
@Constraint(validatedBy = MustHaveAuthorityValidator.class)\r
@Documented\r
public @interface MustHaveAuthority {\r
--String message() default "{eu.etaxonomy.cdm.validation.annotation.MustHaveAuthority.message}";\r
--Class<? extends Payload>[] payload() default {};\r
--Class<?>[] groups() default {};\r
++ \r
++ String message() default "{eu.etaxonomy.cdm.validation.annotation.MustHaveAuthority.message}";\r
++ \r
++ Class<? extends Payload>[] payload() default {};\r
++ \r
++ Class<?>[] groups() default {};\r
}\r
@Constraint(validatedBy = NamesWithHomotypicRelationshipsMustBelongToSameGroupValidator.class)\r
@Documented\r
public @interface NamesWithHomotypicRelationshipsMustBelongToSameGroup {\r
++ \r
String message() default "{eu.etaxonomy.cdm.validation.annotation.NamesWithHomotypicRelationshipsMustBelongToSameGroup.message}";\r
++ \r
Class<? extends Payload>[] payload() default {};\r
++ \r
Class<?>[] groups() default {};\r
}\r
@Constraint(validatedBy = StubValidator.class)\r
@Documented\r
public @interface NoDuplicateNames {\r
--String message() default "{eu.etaxonomy.cdm.validation.annotation.NoDuplicateNames.message}";\r
--Class<? extends Payload>[] payload() default {};\r
--Class<?>[] groups() default {};\r
++ \r
++ String message() default "{eu.etaxonomy.cdm.validation.annotation.NoDuplicateNames.message}";\r
++ \r
++ Class<? extends Payload>[] payload() default {};\r
++ \r
++ Class<?>[] groups() default {};\r
}\r
@Constraint(validatedBy = NullOrNotEmptyValidator.class)\r
@Documented\r
public @interface NullOrNotEmpty {\r
--String message() default "{eu.etaxonomy.cdm.validation.annotation.NullOrNotEmpty.message}";\r
--Class<? extends Payload>[] payload() default {};\r
--Class<?>[] groups() default {};\r
++ \r
++ String message() default "{eu.etaxonomy.cdm.validation.annotation.NullOrNotEmpty.message}";\r
++ \r
++ Class<? extends Payload>[] payload() default {};\r
++ \r
++ Class<?>[] groups() default {};\r
}\r
@Constraint(validatedBy = ReferenceCheckValidator.class)\r
@Documented\r
public @interface ReferenceCheck {\r
++ \r
String message() default "{eu.etaxonomy.cdm.validation.annotation.InReference.ReferenceShouldNotHaveIsbn.message}";\r
++ \r
Class<? extends Payload>[] payload() default {};\r
++ \r
Class<?>[] groups() default {};\r
--\r
}
@Constraint(validatedBy = TaxonNameCannotBeAcceptedAndSynonymValidator.class)\r
@Documented\r
public @interface TaxonNameCannotBeAcceptedAndSynonym {\r
--String message() default "{eu.etaxonomy.cdm.validation.annotation.TaxonNameCannotBeAcceptedAndSynonym.synonymAndTaxonNotAllowed.message}";\r
--Class<? extends Payload>[] payload() default {};\r
--Class<?>[] groups() default {};\r
++ \r
++ String message() default "{eu.etaxonomy.cdm.validation.annotation.TaxonNameCannotBeAcceptedAndSynonym.synonymAndTaxonNotAllowed.message}";\r
++ \r
++ Class<? extends Payload>[] payload() default {};\r
++ \r
++ Class<?>[] groups() default {};\r
}\r
public boolean isValid(NameRelationship nameRelationship, ConstraintValidatorContext constraintContext) {\r
boolean valid = true;\r
if(nameRelationship.getType().equals(NameRelationshipType.BASIONYM())) {\r
-- TaxonNameBase from = CdmBase.deproxy(nameRelationship.getFromName(), TaxonNameBase.class);\r
-- TaxonNameBase to = CdmBase.deproxy(nameRelationship.getToName(), TaxonNameBase.class);\r
++ TaxonNameBase<?,?> from = CdmBase.deproxy(nameRelationship.getFromName(), TaxonNameBase.class);\r
++ TaxonNameBase<?,?> to = CdmBase.deproxy(nameRelationship.getToName(), TaxonNameBase.class);\r
\r
if(from instanceof NonViralName && to instanceof NonViralName) {\r
-- NonViralName fromName = (NonViralName) from;\r
-- NonViralName toName = (NonViralName) to;\r
++ NonViralName<?> fromName = (NonViralName<?>) from;\r
++ NonViralName<?> toName = (NonViralName<?>) to;\r
if(fromName.getBasionymAuthorTeam() == null || !fromName.getBasionymAuthorTeam().equals(toName.getBasionymAuthorTeam())) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentAuthors.message}").addSubNode("fromName").addSubNode("basionymAuthorTeam").addError(); \r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentAuthors.message}").addSubNode("toName").addSubNode("basionymAuthorTeam").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentAuthors.message}").addNode("fromName").addNode("basionymAuthorTeam").addConstraintViolation(); \r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentAuthors.message}").addNode("toName").addNode("basionymAuthorTeam").addConstraintViolation();\r
}\r
\r
String fromNameLastEpithet = fromName.getInfraSpecificEpithet() == null ? fromName.getInfraSpecificEpithet() : fromName.getSpecificEpithet();\r
String toNameLastEpithet = toName.getInfraSpecificEpithet() == null ? toName.getInfraSpecificEpithet() : toName.getSpecificEpithet();\r
if(!fromNameLastEpithet.equals(toNameLastEpithet)) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentEpithets.message}").addSubNode("fromName").addSubNode("nameCache").addError(); \r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentEpithets.message}").addSubNode("toName").addSubNode("nameCache").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentEpithets.message}").addNode("fromName").addNode("nameCache").addConstraintViolation(); \r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentEpithets.message}").addNode("toName").addNode("nameCache").addConstraintViolation();\r
}\r
\r
if(fromName instanceof ZoologicalName && toName instanceof ZoologicalName) {\r
if(!fromName.getNomenclaturalReference().equals(toName.getNomenclaturalReference())) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentNomenclaturalReference.message}").addSubNode("fromName").addSubNode("nomenclaturalReference").addError(); \r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentNomenclaturalReference.message}").addSubNode("toName").addSubNode("nomenclaturalReference").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentNomenclaturalReference.message}").addNode("fromName").addNode("nomenclaturalReference").addConstraintViolation(); \r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentNomenclaturalReference.message}").addNode("toName").addNode("nomenclaturalReference").addConstraintViolation();\r
}\r
\r
if(!fromName.getNomenclaturalMicroReference().equals(toName.getNomenclaturalMicroReference())) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentNomenclaturalReference.message}").addSubNode("fromName").addSubNode("nomenclaturalMicroReference").addError(); \r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentNomenclaturalReference.message}").addSubNode("toName").addSubNode("nomenclaturalMicroReference").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentNomenclaturalReference.message}").addNode("fromName").addNode("nomenclaturalMicroReference").addConstraintViolation(); \r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.BasionymsMustShareEpithetsAndAuthors.differentNomenclaturalReference.message}").addNode("toName").addNode("nomenclaturalMicroReference").addConstraintViolation();\r
}\r
}\r
}\r
\r
public boolean isValid(TaxonRelationship taxonRelationship, ConstraintValidatorContext constraintContext) {\r
boolean valid = true;\r
++ //FIXME Replace by TaxonNode relationship\r
if(taxonRelationship.getType().equals(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())) {\r
Taxon parent = taxonRelationship.getToTaxon();\r
Taxon child = taxonRelationship.getFromTaxon();\r
\r
if(parent.getName().getRank().equals(child.getName().getRank()) || parent.getName().getRank().isLower(child.getName().getRank())) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustBeLowerRankThanParent.message}").addSubNode("fromTaxon").addSubNode("name").addSubNode("rank").addError(); \r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustBeLowerRankThanParent.message}").addNode("fromTaxon").addNode("name").addNode("rank").addConstraintViolation(); \r
}\r
}\r
\r
if(((NonViralName)childName).getRank().isSpecies() || ((NonViralName)childName).getRank().isInfraSpecific()) {\r
if(!((NonViralName)parentName).getGenusOrUninomial().equals(((NonViralName)childName).getGenusOrUninomial())) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustDeriveNameFromParent.message}").addSubNode("fromTaxon").addSubNode("name").addSubNode("genusOrUninomial").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustDeriveNameFromParent.message}").addNode("fromTaxon").addNode("name").addNode("genusOrUninomial").addConstraintViolation();\r
}\r
if(((NonViralName)parentName).getRank().isSpecies() || ((NonViralName)parentName).getRank().isInfraSpecific()) {\r
if(!((NonViralName)parentName).getSpecificEpithet().equals(((NonViralName)childName).getSpecificEpithet())) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustDeriveNameFromParent.message}").addSubNode("fromTaxon").addSubNode("name").addSubNode("specificEpithet").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustDeriveNameFromParent.message}").addNode("fromTaxon").addNode("name").addNode("specificEpithet").addConstraintViolation();\r
} \r
}\r
}\r
\r
if(parent.getName().getRank().isSupraGeneric() && child.getName().getRank().isLower(Rank.GENUS())) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustNotSkipRanks.cannotSkipGenus.message}").addSubNode("fromTaxon").addSubNode("name").addSubNode("rank").addError(); \r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustNotSkipRanks.cannotSkipGenus.message}").addNode("fromTaxon").addNode("name").addNode("rank").addConstraintViolation(); \r
} else if(parent.getName().getRank().isHigher(Rank.SPECIES()) && child.getName().getRank().isLower(Rank.SPECIES())) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustNotSkipRanks.cannotSkipSpecies.message}").addSubNode("fromTaxon").addSubNode("name").addSubNode("rank").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.ChildTaxaMustNotSkipRanks.cannotSkipSpecies.message}").addNode("fromTaxon").addNode("name").addNode("rank").addConstraintViolation();\r
}\r
}\r
\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank;\r
\r
--public class CorrectEpithetsForRankValidator implements\r
-- ConstraintValidator<CorrectEpithetsForRank, NonViralName> {\r
++public class CorrectEpithetsForRankValidator implements ConstraintValidator<CorrectEpithetsForRank, NonViralName> {\r
\r
public void initialize(CorrectEpithetsForRank correctEpithetsForRank) { }\r
\r
if(name.getRank().isSupraGeneric() || name.getRank().isGenus()) { \r
if(name.getInfraGenericEpithet() != null) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNotNull}").addSubNode("infraGenericEpithet").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNotNull}").addNode("infraGenericEpithet").addConstraintViolation();\r
}\r
\r
if(name.getSpecificEpithet() != null) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNotNull}").addSubNode("specificEpithet").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNotNull}").addNode("specificEpithet").addConstraintViolation();\r
} \r
if(name.getInfraSpecificEpithet() != null) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNotNull}").addSubNode("infraSpecificEpithet").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNotNull}").addNode("infraSpecificEpithet").addConstraintViolation();\r
}\r
} else if(name.getRank().isInfraGeneric()) {\r
if(name.getInfraGenericEpithet() == null) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNull}").addSubNode("infraGenericEpithet").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNull}").addNode("infraGenericEpithet").addConstraintViolation();\r
}\r
\r
if(name.getSpecificEpithet() != null) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNotNull}").addSubNode("specificEpithet").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNotNull}").addNode("specificEpithet").addConstraintViolation();\r
} \r
if(name.getInfraSpecificEpithet() != null) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNotNull}").addSubNode("infraSpecificEpithet").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNotNull}").addNode("infraSpecificEpithet").addConstraintViolation();\r
}\r
} else if(name.getRank().isSpecies()) {\r
if(name.getSpecificEpithet() == null) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNull}").addSubNode("specificEpithet").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNull}").addNode("specificEpithet").addConstraintViolation();\r
}\r
\r
if(name.getInfraSpecificEpithet() != null) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNotNull}").addSubNode("infraSpecificEpithet").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNotNull}").addNode("infraSpecificEpithet").addConstraintViolation();\r
}\r
} else if(name.getRank().isInfraSpecific()) {\r
if(name.getSpecificEpithet() == null) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNull}").addSubNode("specificEpithet").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNull}").addNode("specificEpithet").addConstraintViolation();\r
}\r
if(name.getInfraSpecificEpithet() == null) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNull}").addSubNode("infraSpecificEpithet").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank.epithetNull}").addNode("infraSpecificEpithet").addConstraintViolation();\r
}\r
}\r
\r
\r
if(!accepted.getName().getHomotypicalGroup().equals(synonym.getName().getHomotypicalGroup())) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.HomotypicSynonymsShouldBelongToGroup.message}").addSubNode("tyoe").addError(); \r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.HomotypicSynonymsShouldBelongToGroup.message}").addNode("tyoe").addConstraintViolation(); \r
}\r
}\r
\r
\r
}\r
\r
-- public boolean isValid(Reference value,\r
-- ConstraintValidatorContext constraintValidatorContext) {\r
++ public boolean isValid(Reference value, ConstraintValidatorContext constraintValidatorContext) {\r
boolean isValid = true;\r
try {\r
if (value.getInReference() != null){\r
\r
}\r
if (!isValid){\r
-- constraintValidatorContext.disableDefaultError();\r
-- constraintValidatorContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.InReference.wrongInReferenceForReferenceType.message}").addSubNode("inReference").addError();\r
++ constraintValidatorContext.disableDefaultConstraintViolation();\r
++ constraintValidatorContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.InReference.wrongInReferenceForReferenceType.message}").addNode("inReference").addConstraintViolation();\r
}\r
}catch(NullPointerException e){\r
return isValid;\r
nameRelationship.getType().equals(NameRelationshipType.REPLACED_SYNONYM())) {\r
if(!nameRelationship.getFromName().getHomotypicalGroup().equals(nameRelationship.getToName().getHomotypicalGroup())) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.NamesWithHomotypicRelationshipsMustBelongToSameGroup.message}").addSubNode("fromName").addSubNode("homotypicalGroup").addError(); \r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.NamesWithHomotypicRelationshipsMustBelongToSameGroup.message}").addSubNode("toName").addSubNode("homotypicalGroup").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.NamesWithHomotypicRelationshipsMustBelongToSameGroup.message}").addNode("fromName").addNode("homotypicalGroup").addConstraintViolation(); \r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.NamesWithHomotypicRelationshipsMustBelongToSameGroup.message}").addNode("toName").addNode("homotypicalGroup").addConstraintViolation();\r
}\r
}\r
\r
\r
import eu.etaxonomy.cdm.validation.annotation.NullOrNotEmpty;\r
\r
--public class NullOrNotEmptyValidator implements\r
-- ConstraintValidator<NullOrNotEmpty, String> {\r
++public class NullOrNotEmptyValidator implements ConstraintValidator<NullOrNotEmpty, String> {\r
\r
public void initialize(NullOrNotEmpty nullOrNotEmpty) { }\r
\r
isValid &= validIsbn(value, constraintValidatorContext); \r
if (value.getType() == ReferenceType.Journal && value.getDatePublished() != null) {\r
isValid &= false;\r
-- constraintValidatorContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.InReference.JournalShouldNotHaveDatePublished.message}");\r
++ constraintValidatorContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.InReference.JournalShouldNotHaveDatePublished.message}");\r
}\r
\r
return isValid;\r
if ((value.getType() != ReferenceType.Book && value.getType() != ReferenceType.Proceedings) ) {\r
if (value.getIsbn()!= null){\r
isValid = false;\r
-- constraintValidatorContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.InReference.ReferenceShouldNotHaveIsbn.message}");\r
++ constraintValidatorContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.InReference.ReferenceShouldNotHaveIsbn.message}");\r
}\r
}\r
return isValid;\r
\r
import org.hibernate.Hibernate;\r
\r
--import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
--import eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank;\r
import eu.etaxonomy.cdm.validation.annotation.TaxonNameCannotBeAcceptedAndSynonym;\r
\r
public class TaxonNameCannotBeAcceptedAndSynonymValidator implements\r
\r
if(taxonBase1 instanceof Taxon && taxonBase2 instanceof Taxon) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.TaxonNameCannotBeAcceptedAndSynonym.twoAcceptedTaxaNotAllowed.message}").addSubNode("name").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.TaxonNameCannotBeAcceptedAndSynonym.twoAcceptedTaxaNotAllowed.message}").addNode("name").addConstraintViolation();\r
}\r
if((taxonBase1 instanceof Taxon && taxonBase2 instanceof Synonym) || (taxonBase1 instanceof Synonym && taxonBase2 instanceof Taxon)) {\r
valid = false;\r
-- constraintContext.buildErrorWithMessageTemplate("{eu.etaxonomy.cdm.validation.annotation.TaxonNameCannotBeAcceptedAndSynonym.synonymAndTaxonNotAllowed.message}").addSubNode("name").addError();\r
++ constraintContext.buildConstraintViolationWithTemplate("{eu.etaxonomy.cdm.validation.annotation.TaxonNameCannotBeAcceptedAndSynonym.synonymAndTaxonNotAllowed.message}").addNode("name").addConstraintViolation();\r
} \r
}\r
}\r
\r
import java.util.GregorianCalendar;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.junit.Before;\r
import org.junit.Test;\r
*/\r
package eu.etaxonomy.cdm.model.agent;\r
\r
--import static org.junit.Assert.*;\r
--\r
import java.beans.PropertyChangeEvent;\r
import java.beans.PropertyChangeListener;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.Before;\r
\r
import java.util.List;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.junit.Before;\r
import org.junit.Test;\r
\r
package eu.etaxonomy.cdm.model.common;\r
\r
--import junit.framework.Assert;\r
--\r
import org.apache.log4j.Logger;\r
import org.junit.Test;\r
\r
import static org.junit.Assert.assertNotNull;\r
import static org.junit.Assert.assertNull;\r
import static org.junit.Assert.assertTrue;\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.joda.time.DateTimeFieldType;\r
*/\r
package eu.etaxonomy.cdm.model.description;\r
\r
--import static org.junit.Assert.*;\r
--\r
import java.util.ArrayList;\r
import java.util.Arrays;\r
import java.util.List;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.junit.Before;\r
import org.junit.Test;\r
\r
import java.util.List;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
\r
\r
\r
\r
point2.setLongitudeSexagesimal(Sexagesimal.NewInstance(5, 22, null, Direction.WEST));\r
-- Assert.assertEquals((Integer)22, (Integer)point2.getLongitudeSexagesimal().minutes);\r
-- Assert.assertEquals((Integer)0, (Integer)point2.getLongitudeSexagesimal().seconds);\r
++ Assert.assertEquals((Integer)22, point2.getLongitudeSexagesimal().minutes);\r
++ Assert.assertEquals((Integer)0, point2.getLongitudeSexagesimal().seconds);\r
\r
Double latitudeDouble = -45.57389326; \r
point1.setLatitudeSexagesimal(Sexagesimal.valueOf(latitudeDouble, true));\r
\r
package eu.etaxonomy.cdm.model.media;\r
\r
--import static org.junit.Assert.*;\r
--\r
import java.net.URI;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.joda.time.DateTime;\r
import java.util.HashSet;\r
import java.util.Set;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.After;\r
\r
@Test\r
public final void testGetChildAndParentRelationships() {\r
-- NonViralName nonViralName1 = new NonViralName();\r
++ NonViralName<?> nonViralName1 = new NonViralName();\r
assertEquals(0, nonViralName1.getParentRelationships().size());\r
-- assertEquals(0, nonViralName1.getChildRelationships().size());\r
++ assertEquals(0, nonViralName1.getHybridChildRelations().size());\r
BotanicalName femaleParent = BotanicalName.NewInstance(null);\r
HybridRelationship hybridRelationship = new HybridRelationship(nonViralName1, femaleParent, HybridRelationshipType.FEMALE_PARENT(), null );\r
-- assertEquals(1, nonViralName1.getChildRelationships().size());\r
-- assertEquals(hybridRelationship, nonViralName1.getChildRelationships().iterator().next());\r
++ assertEquals(1, nonViralName1.getHybridChildRelations().size());\r
++ assertEquals(hybridRelationship, nonViralName1.getHybridChildRelations().iterator().next());\r
assertEquals(1, femaleParent.getParentRelationships().size());\r
}\r
\r
@Test\r
public final void testAddHybridRelationships() {\r
-- NonViralName nonViralName1 = new NonViralName();\r
++ NonViralName<?> nonViralName1 = new NonViralName();\r
assertEquals(0, nonViralName1.getParentRelationships().size());\r
assertEquals(0, nonViralName1.getChildRelationships().size());\r
BotanicalName femaleParent = BotanicalName.NewInstance(null);\r
nonViralName1.addHybridParent(femaleParent, HybridRelationshipType.MALE_PARENT(), null);\r
nonViralName1.addHybridParent(maleParent, HybridRelationshipType.MALE_PARENT(), null);\r
\r
-- assertEquals(2, nonViralName1.getChildRelationships().size());\r
-- assertEquals(0, nonViralName1.getParentRelationships().size());\r
-- assertEquals(1, maleParent.getParentRelationships().size());\r
-- assertEquals(1, femaleParent.getParentRelationships().size());\r
-- assertEquals(0, maleParent.getChildRelationships().size());\r
-- assertEquals(0, femaleParent.getChildRelationships().size());\r
++ assertEquals(2, nonViralName1.getHybridChildRelations().size());\r
++ assertEquals(0, nonViralName1.getHybridParentRelations().size());\r
++ assertEquals(1, maleParent.getHybridParentRelations().size());\r
++ assertEquals(1, femaleParent.getHybridParentRelations().size());\r
++ assertEquals(0, maleParent.getHybridChildRelations().size());\r
++ assertEquals(0, femaleParent.getHybridChildRelations().size());\r
\r
}\r
\r
@Test(expected=IllegalArgumentException.class)\r
public final void testAddHybridRelationship() {\r
-- NonViralName nonViralName1 = new NonViralName();\r
-- assertEquals(0, nonViralName1.getParentRelationships().size());\r
-- assertEquals(0, nonViralName1.getChildRelationships().size());\r
-- NonViralName botanicalName2 = new NonViralName();\r
++ NonViralName<?> nonViralName1 = new NonViralName();\r
++ assertEquals(0, nonViralName1.getHybridParentRelations().size());\r
++ assertEquals(0, nonViralName1.getHybridChildRelations().size());\r
++ NonViralName<?> botanicalName2 = new NonViralName();\r
botanicalName2.addHybridRelationship(null);\r
}\r
\r
@Test\r
public final void testRemoveHybridRelationship() {\r
-- NonViralName botanicalName1 = new NonViralName();\r
-- assertEquals(0, botanicalName1.getParentRelationships().size());\r
-- assertEquals(0, botanicalName1.getChildRelationships().size());\r
++ NonViralName<?> botanicalName1 = new NonViralName();\r
++ assertEquals(0, botanicalName1.getHybridParentRelations().size());\r
++ assertEquals(0, botanicalName1.getHybridChildRelations().size());\r
BotanicalName femaleParent = BotanicalName.NewInstance(null);\r
-- NonViralName maleParent = NonViralName.NewInstance(null);\r
++ NonViralName<?> maleParent = NonViralName.NewInstance(null);\r
ZoologicalName child = ZoologicalName.NewInstance(null);\r
\r
botanicalName1.addHybridParent(femaleParent, HybridRelationshipType.FEMALE_PARENT(), null);\r
botanicalName1.addHybridParent(maleParent, HybridRelationshipType.MALE_PARENT(), null);\r
botanicalName1.addHybridChild(child, HybridRelationshipType.FIRST_PARENT(), null);\r
-- assertEquals(2, botanicalName1.getChildRelationships().size());\r
-- assertEquals(1, botanicalName1.getParentRelationships().size());\r
-- assertEquals(1, child.getChildRelationships().size());\r
++ assertEquals(2, botanicalName1.getHybridChildRelations().size());\r
++ assertEquals(1, botanicalName1.getHybridParentRelations().size());\r
++ assertEquals(1, child.getHybridChildRelations().size());\r
\r
botanicalName1.removeHybridParent(femaleParent);\r
-- assertEquals(1, botanicalName1.getChildRelationships().size());\r
-- assertEquals(1, botanicalName1.getParentRelationships().size());\r
++ assertEquals(1, botanicalName1.getHybridChildRelations().size());\r
++ assertEquals(1, botanicalName1.getHybridParentRelations().size());\r
\r
botanicalName1.removeHybridParent(maleParent);\r
-- assertEquals(0, botanicalName1.getChildRelationships().size());\r
-- assertEquals(1, botanicalName1.getParentRelationships().size());\r
++ assertEquals(0, botanicalName1.getHybridChildRelations().size());\r
++ assertEquals(1, botanicalName1.getHybridParentRelations().size());\r
\r
botanicalName1.removeHybridChild(child);\r
-- assertEquals(0, botanicalName1.getParentRelationships().size());\r
++ assertEquals(0, botanicalName1.getHybridParentRelations().size());\r
\r
//null\r
botanicalName1.removeHybridRelationship(null);\r
-- assertEquals(0, botanicalName1.getChildRelationships().size());\r
++ assertEquals(0, botanicalName1.getHybridChildRelations().size());\r
}\r
\r
\r
nonViralName1.setInfraSpecificEpithet("infrabus");\r
nonViralName1.setBinomHybrid(true);\r
\r
-- NonViralName parent = NonViralName.NewInstance(Rank.SPECIES());\r
-- NonViralName parent2 = NonViralName.NewInstance(Rank.SPECIES());\r
-- NonViralName child = NonViralName.NewInstance(Rank.SPECIES());\r
-- NonViralName child2 = NonViralName.NewInstance(Rank.SPECIES());\r
++ NonViralName<?> parent = NonViralName.NewInstance(Rank.SPECIES());\r
++ NonViralName<?> parent2 = NonViralName.NewInstance(Rank.SPECIES());\r
++ NonViralName<?> child = NonViralName.NewInstance(Rank.SPECIES());\r
++ NonViralName<?> child2 = NonViralName.NewInstance(Rank.SPECIES());\r
nonViralName1.addHybridParent(parent, HybridRelationshipType.FIRST_PARENT(), "parent rule");\r
nonViralName1.addHybridParent(parent2, HybridRelationshipType.SECOND_PARENT(), "parent rule2");\r
nonViralName1.addHybridChild(child, HybridRelationshipType.FEMALE_PARENT(), "child rule");\r
\r
\r
-- NonViralName clone = (NonViralName)nonViralName1.clone();\r
++ NonViralName<?> clone = (NonViralName)nonViralName1.clone();\r
Assert.assertEquals("Genus should be equal", "Aus", clone.getGenusOrUninomial());\r
Assert.assertEquals("Infragenus should be equal", "Infaus", clone.getInfraGenericEpithet());\r
Assert.assertEquals("Specific epithet should be equal", "bus", clone.getSpecificEpithet());\r
Assert.assertEquals("There should be exactly 2 hybrid relationships in which the clone takes the child role", 2, clone.getChildRelationships().size());\r
Set<NonViralName> parentSet = new HashSet<NonViralName>();\r
Set<NonViralName> childSet = new HashSet<NonViralName>();\r
-- for (Object object : clone.getChildRelationships()){\r
++ for (Object object : clone.getHybridChildRelations()){\r
HybridRelationship childRelation = (HybridRelationship)object;\r
-- NonViralName relatedFrom = childRelation.getRelatedFrom();\r
++ NonViralName<?> relatedFrom = childRelation.getRelatedFrom();\r
parentSet.add(relatedFrom);\r
-- NonViralName relatedTo = childRelation.getRelatedTo();\r
++ NonViralName<?> relatedTo = childRelation.getRelatedTo();\r
childSet.add(relatedTo);\r
}\r
Assert.assertTrue("Parent set should contain parent1", parentSet.contains(parent));\r
\r
//hybrid child of clone\r
Assert.assertEquals("There should be exactly 1 hybrid relationship in which the clone takes the parent role", 1, clone.getParentRelationships().size());\r
-- HybridRelationship parentRelation = (HybridRelationship)clone.getParentRelationships().iterator().next();\r
++ HybridRelationship parentRelation = (HybridRelationship)clone.getHybridParentRelations().iterator().next();\r
Assert.assertSame("Clone should be parent in parentRelationship", clone, parentRelation.getRelatedFrom());\r
Assert.assertSame("Child should be child in parentRelationship", child, parentRelation.getRelatedTo());\r
Assert.assertSame("Relationship type should be cloned correctly", HybridRelationshipType.FEMALE_PARENT(), parentRelation.getType());\r
import java.util.Iterator;\r
import java.util.Set;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.commons.lang.StringUtils;\r
import org.apache.log4j.Logger;\r
private static TaxonNameBase<?,?> taxonName3;\r
private static TaxonNameBase<?,?> taxonName12;\r
private static TaxonNameBase<?,?> taxonName121;\r
-- private static Reference ref1;\r
-- private static Reference ref2;\r
-- private static Reference ref3;\r
++ private static Reference<?> ref1;\r
++ private static Reference<?> ref2;\r
++ private static Reference<?> ref3;\r
//private ReferenceFactory refFactory;\r
\r
\r
CdmBase referencedCdmBase = Person.NewInstance();\r
Set<Class<? extends CdmBase>> allCdmClasses = findAllCdmClasses();\r
\r
-- Class referencedClass = referencedCdmBase.getClass();\r
++ Class<? extends CdmBase> referencedClass = referencedCdmBase.getClass();\r
Set<CdmBase> result = new HashSet<CdmBase>();\r
System.out.println("Referenced Class: " + referencedClass.getName());\r
\r
\r
}\r
\r
-- private boolean handleSingleClass(Class classToBeSearchedFor, Class type, Field field, Class cdmClass, Set<CdmBase> result,CdmBase value){\r
++ private boolean handleSingleClass(Class<?> classToBeSearchedFor, Class<?> type, Field field, Class<?> cdmClass, Set<CdmBase> result, CdmBase value){\r
if (! Modifier.isStatic(field.getModifiers())){\r
String methodName = StringUtils.rightPad(field.getName(), 30);\r
String className = StringUtils.rightPad(cdmClass.getSimpleName(), 30);\r
return true;\r
}\r
\r
-- private Set<Field> getFields(Class clazz){\r
++ private Set<Field> getFields(Class<?> clazz){\r
Set<Field> result = new HashSet<Field>();\r
for (Field field: clazz.getDeclaredFields()){\r
if (!Modifier.isStatic(field.getModifiers())){\r
result.add(field); \r
}\r
}\r
-- Class superclass = clazz.getSuperclass();\r
++ Class<?> superclass = clazz.getSuperclass();\r
if (CdmBase.class.isAssignableFrom(superclass)){\r
result.addAll(getFields(superclass));\r
}\r
return result;\r
}\r
\r
-- private Set<CdmBase> getCdmBasesByFieldAndClass(Field field, Class clazz, CdmBase value){\r
++ private Set<CdmBase> getCdmBasesByFieldAndClass(Field field, Class<?> clazz, CdmBase value){\r
//FIXME make not dummy but use dao\r
Set<CdmBase> result = new HashSet<CdmBase>();\r
\r
BotanicalName name = BotanicalName.NewInstance(Rank.GENUS());\r
name.setTitleCache("A dummy name", true);\r
result.add(name);\r
-- Reference ref = ReferenceFactory.newBook();\r
++ Reference<?> ref = ReferenceFactory.newBook();\r
ref.setTitleCache("A dummy book", true);\r
result.add(ref);\r
\r
Class<?> returnType = method.getReturnType();\r
handleClass(allCdmClasses,returnType);\r
Class<?>[] params = method.getParameterTypes();\r
-- for (Class paramClass : params){\r
++ for (Class<?> paramClass : params){\r
handleClass(allCdmClasses, paramClass);\r
}\r
} \r
if (! withAbstract){\r
Iterator<Class<? extends CdmBase>> iterator = allCdmClasses.iterator();\r
while (iterator.hasNext()){\r
-- Class clazz = iterator.next();\r
++ Class<?> clazz = iterator.next();\r
if (Modifier.isAbstract(clazz.getModifiers())){\r
iterator.remove();\r
}\r
return allCdmClasses;\r
}\r
\r
-- private void handleClass(Set<Class<? extends CdmBase>> allCdmClasses, Class returnType){\r
++ private void handleClass(Set<Class<? extends CdmBase>> allCdmClasses, Class<?> returnType){\r
if (CdmBase.class.isAssignableFrom(returnType)){\r
if (! allCdmClasses.contains(returnType)){\r
//System.out.println(returnType.getSimpleName());\r
allCdmClasses.add((Class)returnType);\r
-- Class superClass = returnType.getSuperclass();\r
++ Class<?> superClass = returnType.getSuperclass();\r
handleClass(allCdmClasses, superClass);\r
}\r
}\r
\r
\r
import static org.junit.Assert.assertNotNull;\r
--import junit.framework.Assert;\r
\r
++import org.apache.commons.lang.StringUtils;\r
import org.apache.log4j.Logger;\r
import org.junit.After;\r
import org.junit.AfterClass;\r
++import org.junit.Assert;\r
import org.junit.Before;\r
import org.junit.BeforeClass;\r
import org.junit.Test;\r
\r
--import eu.etaxonomy.cdm.common.CdmUtils;\r
import eu.etaxonomy.cdm.model.agent.Person;\r
\r
/**\r
Assert.assertEquals("Person2 title should be P2NomT", "P2NomT", person2.getNomenclaturalTitle());\r
//person3\r
Assert.assertNotNull("person3 nomenclatural title must not to be null", person3.getNomenclaturalTitle());\r
-- Assert.assertTrue("Person3 nomenclatural title must not be empty", CdmUtils.isNotEmpty(person3.getNomenclaturalTitle()));\r
++ Assert.assertTrue("Person3 nomenclatural title must not be empty", StringUtils.isNotBlank(person3.getNomenclaturalTitle()));\r
//don't take to serious, may be also something different, but not empty\r
Assert.assertEquals("Person3 title should start with Person#0", "Person#0", person3.getNomenclaturalTitle().substring(0, 8));\r
}\r
Assert.assertEquals("Person2 title cache should be P2NomT", "P2FN P2LN P2Suff", person2.getTitleCache());\r
//person3\r
Assert.assertNotNull("person3 title cache must not to be null", person3.getTitleCache());\r
-- Assert.assertTrue("Person3 title cache must not be empty", CdmUtils.isNotEmpty(person3.getTitleCache()));\r
++ Assert.assertTrue("Person3 title cache must not be empty", StringUtils.isNotBlank(person3.getTitleCache()));\r
//don't take to serious, may be also something different, but not empty\r
Assert.assertEquals("Person3 title cache should start with Person#0", "Person#0", person3.getTitleCache().substring(0, 8));\r
person3.setFirstname("Klaus");\r
\r
import java.util.UUID;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.Before;\r
@SuppressWarnings("unused")\r
private static final Logger logger = Logger.getLogger(TermDefaultCacheStrategyTest.class);\r
\r
-- private TermDefaultCacheStrategy strategy;\r
++ private TermDefaultCacheStrategy<?> strategy;\r
\r
//************************* SET UP **************************************** \r
\r
package eu.etaxonomy.cdm.strategy.cache.reference;\r
\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.Before;\r
private static IJournal journal1;\r
private static Team team1;\r
private static Team team2;\r
-- private static ArticleDefaultCacheStrategy defaultStrategy;\r
++ private static ArticleDefaultCacheStrategy<Reference<?>> defaultStrategy;\r
private static final String detail1 = "55";\r
\r
/**\r
article1.setVolume("34");\r
article1.setSeries("ser. 2");\r
article1.setDatePublished(TimePeriod.NewInstance(1975));\r
-- Assert.assertEquals("in My journal ser. 2, 34", defaultStrategy.getNomRefTitleWithoutYearAndAuthor((Reference)article1));\r
++ Assert.assertEquals("in My journal ser. 2, 34", defaultStrategy.getNomRefTitleWithoutYearAndAuthor((Reference<?>)article1));\r
}\r
\r
@Test \r
article1.setAuthorTeam(articleAuthor);\r
article1.setVolume("18");\r
article1.setDatePublished(TimePeriod.NewInstance(1943));\r
-- Assert.assertEquals("Babc. & Stebbins in Univ. Calif. Publ. Bot. 18. 1943", defaultStrategy.getTitleCache((Reference)article1));\r
++ Assert.assertEquals("Babc. & Stebbins in Univ. Calif. Publ. Bot. 18. 1943", defaultStrategy.getTitleCache((Reference<?>)article1));\r
}\r
\r
}\r
package eu.etaxonomy.cdm.strategy.cache.reference;\r
\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.Before;\r
package eu.etaxonomy.cdm.strategy.cache.reference;\r
\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.Before;\r
package eu.etaxonomy.cdm.strategy.cache.reference;\r
\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.Before;\r
*/\r
package eu.etaxonomy.cdm.strategy.parser;\r
\r
--import static org.junit.Assert.*;\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.junit.Before;\r
import org.junit.BeforeClass;\r
import java.util.regex.Matcher;\r
import java.util.regex.Pattern;\r
\r
--import junit.framework.Assert;\r
--\r
import org.apache.log4j.Logger;\r
++import org.junit.Assert;\r
import org.junit.Before;\r
import org.junit.BeforeClass;\r
--import org.junit.Ignore;\r
import org.junit.Test;\r
\r
import eu.etaxonomy.cdm.model.agent.INomenclaturalAuthor;\r
\r
//unranked infraspecific\r
String infraspecificUnranked = "Genus species [unranked] infraspecific";\r
-- NonViralName name = parser.parseFullName(infraspecificUnranked);\r
++ NonViralName<?> name = parser.parseFullName(infraspecificUnranked);\r
assertEquals( "Genus", name.getGenusOrUninomial());\r
assertEquals( "species", name.getSpecificEpithet());\r
assertEquals( "infraspecific", name.getInfraSpecificEpithet());\r
\r
//unranked infrageneric\r
String infraGenericUnranked = "Genus [unranked] Infragen";\r
-- NonViralName name2 = parser.parseFullName(infraGenericUnranked);\r
++ NonViralName<?> name2 = parser.parseFullName(infraGenericUnranked);\r
assertEquals( "Genus", name2.getGenusOrUninomial());\r
assertEquals( null, name2.getSpecificEpithet());\r
assertEquals( "Infragen", name2.getInfraGenericEpithet());\r
assertEquals("Title cache must be correct", "Abies alba \u00D7 Pinus bus", name1.getTitleCache());\r
List<HybridRelationship> orderedRels = name1.getOrderedChildRelationships();\r
assertEquals("Name must have 2 hybrid parents in ordered list", 2, orderedRels.size());\r
-- NonViralName firstParent = orderedRels.get(0).getParentName();\r
++ NonViralName<?> firstParent = orderedRels.get(0).getParentName();\r
assertEquals("Name must have Abies alba as first hybrid parent", "Abies alba", firstParent.getTitleCache());\r
-- NonViralName secondParent = orderedRels.get(1).getParentName();\r
++ NonViralName<?> secondParent = orderedRels.get(1).getParentName();\r
assertEquals("Name must have Pinus bus as second hybrid parent", "Pinus bus", secondParent.getTitleCache());\r
assertEquals("Hybrid name must have the lowest rank ('species') as rank", Rank.SPECIES(), name1.getRank());\r
\r
\r
private void testName_StringNomcodeRank(Method parseMethod) \r
throws InvocationTargetException, IllegalAccessException {\r
-- NonViralName name1 = (NonViralName)parseMethod.invoke(parser, strNameAbies1, null, Rank.SPECIES());\r
++ NonViralName<?> name1 = (NonViralName)parseMethod.invoke(parser, strNameAbies1, null, Rank.SPECIES());\r
//parser.parseFullName(strNameAbies1, null, Rank.SPECIES());\r
assertEquals("Abies", name1.getGenusOrUninomial());\r
assertEquals("alba", name1.getSpecificEpithet());\r
assertEquals("alba", nameAuthor.getSpecificEpithet());\r
assertEquals("Mueller", nameAuthor.getCombinationAuthorTeam().getNomenclaturalTitle());\r
\r
-- NonViralName nameBasionymAuthor = (NonViralName)parseMethod.invoke(parser, strNameAbiesBasionymAuthor1, null, Rank.SPECIES());\r
++ NonViralName<?> nameBasionymAuthor = (NonViralName)parseMethod.invoke(parser, strNameAbiesBasionymAuthor1, null, Rank.SPECIES());\r
assertEquals("Abies", nameBasionymAuthor.getGenusOrUninomial());\r
assertEquals("alba", nameBasionymAuthor.getSpecificEpithet());\r
assertEquals("D'Mueller", nameBasionymAuthor.getCombinationAuthorTeam().getNomenclaturalTitle());\r
assertEquals("Ciardelli", nameBasionymAuthor.getBasionymAuthorTeam().getNomenclaturalTitle());\r
\r
-- NonViralName nameBasionymExAuthor = (NonViralName)parseMethod.invoke(parser, strNameAbiesBasionymExAuthor1, null, Rank.SPECIES());\r
++ NonViralName<?> nameBasionymExAuthor = (NonViralName)parseMethod.invoke(parser, strNameAbiesBasionymExAuthor1, null, Rank.SPECIES());\r
assertEquals("Abies", nameBasionymExAuthor.getGenusOrUninomial());\r
assertEquals("alba", nameBasionymExAuthor.getSpecificEpithet());\r
assertEquals("D'Mueller", nameBasionymExAuthor.getExCombinationAuthorTeam().getNomenclaturalTitle());\r
assertEquals("Ciardelli", nameBasionymExAuthor.getExBasionymAuthorTeam().getNomenclaturalTitle());\r
assertEquals("Doering", nameBasionymExAuthor.getBasionymAuthorTeam().getNomenclaturalTitle());\r
\r
-- NonViralName name2 = (NonViralName)parseMethod.invoke(parser, strNameAbiesSub1, null, Rank.SPECIES());\r
++ NonViralName<?> name2 = (NonViralName)parseMethod.invoke(parser, strNameAbiesSub1, null, Rank.SPECIES());\r
assertEquals("Abies", name2.getGenusOrUninomial());\r
assertEquals("alba", name2.getSpecificEpithet());\r
assertEquals("beta", name2.getInfraSpecificEpithet());\r
\r
String irinaExample = "Milichiidae Sharp, 1899, Insects. Part II. Hymenopteracontinued (Tubulifera and Aculeata), Coleoptera, Strepsiptera, Lepidoptera, Diptera, Aphaniptera, Thysanoptera, Hemiptera, Anoplura 6: 504. 1899";\r
// irinaExample = "Milichiidae Sharp, 1899, Insects. Part II. Uiuis Iuiui Hymenopteracontinued (Tubulifera and Aculeata), Coleoptera, Strepsiptera, Lepidoptera, Diptera, Aphaniptera, Thysanoptera, Hemiptera, Anoplura 6: 504. 1899";\r
-- NonViralName nvn = this.parser.parseReferencedName(irinaExample, NomenclaturalCode.ICZN, null);\r
++ NonViralName<?> nvn = this.parser.parseReferencedName(irinaExample, NomenclaturalCode.ICZN, null);\r
int parsingProblem = nvn.getParsingProblem();\r
Assert.assertEquals("Name should have only rank warning", 1, parsingProblem);\r
Assert.assertEquals("Titlecache", "Milichiidae Sharp, 1899", nvn.getTitleCache());\r
\r
package eu.etaxonomy.cdm.validation;\r
\r
--import static org.junit.Assert.assertEquals;\r
import static org.junit.Assert.assertFalse;\r
--import static org.junit.Assert.assertNotNull;\r
import static org.junit.Assert.assertTrue;\r
\r
import java.util.Set;\r
--import java.util.UUID;\r
\r
import javax.validation.ConstraintViolation;\r
import javax.validation.Validation;\r
import javax.validation.Validator;\r
import javax.validation.ValidatorFactory;\r
--import javax.validation.groups.Default;\r
--\r
--import junit.framework.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.Before;\r
--import org.junit.Ignore;\r
import org.junit.Test;\r
\r
--import org.unitils.spring.annotation.SpringBeanByType;\r
--\r
import eu.etaxonomy.cdm.model.agent.Person;\r
import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;\r
import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import javax.validation.ValidatorFactory;\r
import javax.validation.groups.Default;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.Before;\r
import javax.validation.ValidatorFactory;\r
import javax.validation.groups.Default;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.Before;\r
Set<ConstraintViolation<IBookSection>> constraintViolations = validator.validate(bookSection, Level2.class);\r
assertTrue("There should be one constraint violation as this book has a valid Ref",constraintViolations.size() == 0);\r
\r
-- Reference article = ReferenceFactory.newArticle();\r
++ Reference<?> article = ReferenceFactory.newArticle();\r
article.setTitleCache("article");\r
bookSection.setInReference(article);\r
constraintViolations = validator.validate(bookSection, Level2.class);\r
@Test\r
public final void testValidationAfterCasting(){\r
\r
-- ((Reference)book).castReferenceToArticle();\r
++ ((Reference<?>)book).castReferenceToArticle();\r
Set<ConstraintViolation<IBook>> constraintViolations = validator.validate(book, Level2.class);\r
assertFalse("There should be one constraint violations as this article is not valid at level 2 (has an isbn)",constraintViolations.isEmpty());\r
}\r
</plugins>
</build>
<dependencies>
++ <dependency>
++ <groupId>org.hibernate.javax.persistence</groupId>
++ <artifactId>hibernate-jpa-2.0-api</artifactId>
++ </dependency>
<dependency>
<groupId>eu.etaxonomy</groupId>
<artifactId>cdmlib-model</artifactId>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
-- <dependency>
-- <groupId>javax.persistence</groupId>
-- <artifactId>persistence-api</artifactId>
-- </dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<artifactId>aspectjweaver</artifactId>
</dependency>
<dependency>
-- <groupId>org.hibernate</groupId>
++ <groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
</dependency>
-- <dependency>
-- <groupId>org.hibernate</groupId>
-- <artifactId>hibernate-annotations</artifactId>
-- </dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
-- <artifactId>hibernate-envers</artifactId>
++ <artifactId>hibernate-search</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
-- <artifactId>hibernate-search</artifactId>
++ <artifactId>hibernate-envers</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
</dependency>
++ <!-- only needed as long as hibernate-c3p0 is still dependend on c3p0/c3p0/0.9.1 -->
++ <dependency>
++ <groupId>com.mchange</groupId>
++ <artifactId>c3p0</artifactId>
++ <version>0.9.2</version>
++ </dependency>
++
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
-- <version>1.7.0</version>
++ <version>1.8.2</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
<dependency>
-- <groupId>commons-dbcp</groupId>
-- <artifactId>commons-dbcp</artifactId>
-- <version>1.2.2</version>
-- </dependency>
-- <dependency>
-- <groupId>org.springmodules</groupId>
-- <artifactId>spring-modules-lucene</artifactId>
++ <groupId>commons-dbcp</groupId>
++ <artifactId>commons-dbcp</artifactId>
++<!-- <scope>test</scope> , currently also used in NomenclaturalCodeAwareDataSource and maybe others -->
</dependency>
<dependency>
<groupId>org.unitils</groupId>
<groupId>org.unitils</groupId>
<artifactId>unitils-orm</artifactId>
<scope>test</scope>
++ <exclusions>
++ <exclusion>
++ <groupId>javax.persistence</groupId>
++ <artifactId>persistence-api</artifactId>
++ </exclusion>
++ </exclusions>
</dependency>
<dependency>
<groupId>org.unitils</groupId>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
</dependency>
++<!-- <dependency>
++ <groupId>org.springmodules</groupId>
++ <artifactId>spring-modules-lucene</artifactId>
++ </dependency> -->
<!-- ******* DATABASES DRIVER ******* -->
<dependency>
<groupId>mysql</groupId>
\r
import org.apache.commons.lang.StringUtils;\r
import org.apache.log4j.Logger;\r
--import org.hibernate.cache.CacheProvider;\r
--import org.hibernate.cache.NoCacheProvider;\r
++import org.hibernate.cache.internal.NoCachingRegionFactory;\r
++import org.hibernate.cache.spi.RegionFactory;\r
++import org.hibernate.cfg.Environment;\r
import org.springframework.beans.MutablePropertyValues;\r
import org.springframework.beans.factory.config.BeanDefinition;\r
import org.springframework.beans.factory.config.PropertiesFactoryBean;\r
private boolean showSql = false;\r
private boolean formatSql = false;\r
private boolean registerSearchListener = false;\r
-- private Class<? extends CacheProvider> cacheProviderClass = NoCacheProvider.class;\r
++ private Class<? extends RegionFactory> cacheProviderClass = NoCachingRegionFactory.class;\r
\r
public static CdmDataSource NewInstance(DatabaseTypeEnum dbType, String server, String database, String username, String password){\r
return new CdmDataSource(dbType, server, database, -1, username, password, null, null, null);\r
/* (non-Javadoc)\r
* @see eu.etaxonomy.cdm.api.application.ICdmDataSource#getDatasourceBean()\r
*/\r
-- @SuppressWarnings("unchecked")\r
public BeanDefinition getDatasourceBean(){\r
AbstractBeanDefinition bd = new RootBeanDefinition(dbType.getDataSourceClass());\r
//attributes\r
//properties\r
MutablePropertyValues props = new MutablePropertyValues();\r
Properties persistentProperties = getDatasourceProperties();\r
-- Enumeration<String> keys = (Enumeration)persistentProperties.keys();\r
++ Enumeration<Object> keys = (Enumeration<Object>)persistentProperties.keys();\r
while (keys.hasMoreElements()){\r
String key = (String)keys.nextElement();\r
props.addPropertyValue(key, persistentProperties.getProperty(key));\r
++ Properties a = Environment.getProperties();\r
}\r
\r
bd.setPropertyValues(props);\r
boolean showSql = false;\r
boolean formatSql = false;\r
boolean registerSearchListener = false;\r
-- Class<? extends CacheProvider> cacheProviderClass = NoCacheProvider.class;\r
++ Class<? extends RegionFactory> cacheProviderClass = NoCachingRegionFactory.class;\r
return getHibernatePropertiesBean(hbm2dll, showSql, formatSql, registerSearchListener, cacheProviderClass);\r
}\r
\r
/* (non-Javadoc)\r
* @see eu.etaxonomy.cdm.api.application.ICdmDataSource#getHibernatePropertiesBean(eu.etaxonomy.cdm.database.CdmPersistentDataSource.HBM2DDL, java.lang.Boolean, java.lang.Boolean, java.lang.Class)\r
*/\r
-- public BeanDefinition getHibernatePropertiesBean(DbSchemaValidation hbm2dll, Boolean showSql, Boolean formatSql, Boolean registerSearchListener, Class<? extends CacheProvider> cacheProviderClass){\r
++ public BeanDefinition getHibernatePropertiesBean(DbSchemaValidation hbm2dll, Boolean showSql, Boolean formatSql, Boolean registerSearchListener, Class<? extends RegionFactory> cacheProviderClass){\r
//Hibernate default values\r
if (hbm2dll == null){\r
hbm2dll = this.hbm2dll;\r
Properties props = new Properties();\r
props.setProperty("hibernate.hbm2ddl.auto", hbm2dll.toString());\r
props.setProperty("hibernate.dialect", dbtype.getHibernateDialect());\r
-- props.setProperty("hibernate.cache.provider_class", cacheProviderClass.getName());\r
++// OLD:props.setProperty("hibernate.cache.provider_class", cacheProviderClass.getName());\r
++ props.setProperty("hibernate.cache.region.factory_class", cacheProviderClass.getName());\r
props.setProperty("hibernate.show_sql", String.valueOf(showSql));\r
props.setProperty("hibernate.format_sql", String.valueOf(formatSql));\r
props.setProperty("hibernate.search.autoregister_listeners", String.valueOf(registerSearchListener));\r
import javax.sql.DataSource;\r
\r
import org.apache.log4j.Logger;\r
--import org.hibernate.cache.CacheProvider;\r
--import org.hibernate.cache.NoCacheProvider;\r
++import org.hibernate.cache.internal.NoCachingRegionFactory;\r
++import org.hibernate.cache.spi.RegionFactory;\r
import org.jdom.Attribute;\r
import org.jdom.Document;\r
import org.jdom.Element;\r
boolean showSql = false;\r
boolean formatSql = false;\r
boolean registerSearchListener = false;\r
-- Class<? extends CacheProvider> cacheProviderClass = NoCacheProvider.class;\r
++ Class<? extends RegionFactory> cacheProviderClass = NoCachingRegionFactory.class;\r
return getHibernatePropertiesBean(hbm2dll, showSql, formatSql, registerSearchListener, cacheProviderClass);\r
}\r
\r
* @param showSql\r
* @return\r
*/\r
-- public BeanDefinition getHibernatePropertiesBean(DbSchemaValidation hbm2dll, Boolean showSql, Boolean formatSql, Boolean registerSearchListener, Class<? extends CacheProvider> cacheProviderClass){\r
++ public BeanDefinition getHibernatePropertiesBean(DbSchemaValidation hbm2dll, Boolean showSql, Boolean formatSql, Boolean registerSearchListener, Class<? extends RegionFactory> cacheProviderClass){\r
//Hibernate default values\r
if (hbm2dll == null){\r
hbm2dll = DbSchemaValidation.VALIDATE;\r
formatSql = false;\r
}\r
if (cacheProviderClass == null){\r
-- cacheProviderClass = NoCacheProvider.class;\r
++ cacheProviderClass = NoCachingRegionFactory.class;\r
}\r
if(registerSearchListener == null){\r
registerSearchListener = false;\r
Properties props = new Properties();\r
props.setProperty("hibernate.hbm2ddl.auto", hbm2dll.toString());\r
props.setProperty("hibernate.dialect", dbtype.getHibernateDialect());\r
-- props.setProperty("hibernate.cache.provider_class", cacheProviderClass.getName());\r
++ props.setProperty("hibernate.cache.region.factory_class", cacheProviderClass.getName());\r
props.setProperty("hibernate.show_sql", String.valueOf(showSql));\r
props.setProperty("hibernate.format_sql", String.valueOf(formatSql));\r
props.setProperty("hibernate.search.autoregister_listeners", String.valueOf(registerSearchListener));\r
import java.sql.ResultSet;\r
import java.sql.SQLException;\r
\r
--import org.hibernate.cache.CacheProvider;\r
++import org.hibernate.cache.spi.RegionFactory;\r
import org.springframework.beans.factory.config.BeanDefinition;\r
\r
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
* @param cacheProviderClass\r
* @return BeanDefinition\r
*/\r
-- public BeanDefinition getHibernatePropertiesBean(DbSchemaValidation hbm2dll, Boolean showSql, Boolean formatSql, Boolean registerSearchListener, Class<? extends CacheProvider> cacheProviderClass);\r
++ public BeanDefinition getHibernatePropertiesBean(DbSchemaValidation hbm2dll, Boolean showSql, Boolean formatSql, Boolean registerSearchListener, Class<? extends RegionFactory> cacheProviderClass);\r
\r
\r
/**\r
* @version 1.0
*/
public class NomenclaturalCodeAwareDataSource extends BasicDataSource {
-- private static final Logger logger = Logger
-- .getLogger(NomenclaturalCodeAwareDataSource.class);
++ @SuppressWarnings("unused")
++ private static final Logger logger = Logger.getLogger(NomenclaturalCodeAwareDataSource.class);
private NomenclaturalCode nomenclaturalCode;
protected int defaultPort = 1433;\r
\r
//hibernate dialect\r
-- protected String hibernateDialect = "SQLServerDialect";\r
++ protected String hibernateDialect = "SQLServer2005Dialect";\r
\r
public String getConnectionString(ICdmDataSource ds, int port){\r
return getConnectionString(ds, port, null);\r
\r
/**\r
* Deletes all foreign keys between tables in a sql server database.\r
-- * This make deleting tables easier.\r
++ * This makes deleting tables easier.\r
* @param sqlServerDataSource\r
* @return\r
* @throws SQLException\r
--- /dev/null
--- /dev/null
++/**\r
++* Copyright (C) 2007 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
++\r
++package eu.etaxonomy.cdm.database.types;\r
++\r
++\r
++\r
++/**\r
++ * @author a.mueller\r
++ *\r
++ */\r
++public class SqlServer2008DatabaseType extends SqlServer2005DatabaseType {\r
++ \r
++ //hibernate dialect\r
++ protected String hibernateDialect = "SQLServer2008Dialect" ;\r
++ \r
++ \r
++ //Constructor\r
++ public SqlServer2008DatabaseType() {\r
++ init (typeName, classString, urlString, defaultPort, hibernateDialect );\r
++ }\r
++ \r
++}
import java.lang.reflect.Method;\r
import java.lang.reflect.ParameterizedType;\r
import java.lang.reflect.Type;\r
--import java.lang.reflect.TypeVariable;\r
import java.util.Collection;\r
import java.util.Collections;\r
import java.util.HashSet;\r
\r
import java.io.IOException;\r
import java.io.StringReader;\r
--import java.util.Iterator;\r
import java.util.Vector;\r
\r
import org.apache.commons.logging.Log;\r
import org.apache.lucene.analysis.standard.StandardAnalyzer;\r
import org.apache.lucene.index.CorruptIndexException;\r
import org.apache.lucene.index.IndexReader;\r
++import org.apache.lucene.index.IndexWriterConfig;\r
import org.apache.lucene.index.Term;\r
import org.apache.lucene.queryParser.ParseException;\r
import org.apache.lucene.queryParser.QueryParser;\r
import org.apache.lucene.search.spell.LuceneDictionary;\r
import org.apache.lucene.search.spell.SpellChecker;\r
import org.apache.lucene.store.Directory;\r
++import org.apache.lucene.util.BytesRef;\r
++import org.apache.lucene.util.BytesRefIterator;\r
++import org.apache.lucene.util.Version;\r
import org.hibernate.SessionFactory;\r
import org.hibernate.search.FullTextSession;\r
import org.hibernate.search.Search;\r
import org.hibernate.search.SearchFactory;\r
--import org.hibernate.search.reader.ReaderProvider;\r
--import org.hibernate.search.store.DirectoryProvider;\r
++import org.hibernate.search.indexes.IndexReaderAccessor;\r
import org.springframework.beans.factory.annotation.Autowired;\r
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
\r
import eu.etaxonomy.cdm.persistence.dao.IAlternativeSpellingSuggestionParser;\r
\r
\r
--public abstract class AlternativeSpellingSuggestionParser<T extends CdmBase> extends HibernateDaoSupport implements\r
--IAlternativeSpellingSuggestionParser {\r
++\r
++public abstract class AlternativeSpellingSuggestionParser<T extends CdmBase> \r
++ extends HibernateDaoSupport \r
++ implements IAlternativeSpellingSuggestionParser {\r
private static Log log = LogFactory.getLog(AlternativeSpellingSuggestionParser.class);\r
\r
private String defaultField;\r
private Class<T> type;\r
private Class<? extends T> indexedClasses[];\r
\r
++ //FIXME only for testing in Hibernate 4/Lucene 3.6 migration\r
++ public static Version version = Version.LUCENE_36;\r
++\r
++ \r
public AlternativeSpellingSuggestionParser(Class<T> type) {\r
this.type = type;\r
}\r
}\r
\r
public Query parse(String queryString) throws ParseException {\r
-- QueryParser queryParser = new QueryParser(defaultField, new StandardAnalyzer()); \r
++ QueryParser queryParser = new QueryParser(version, defaultField, new StandardAnalyzer(version)); \r
return queryParser.parse(queryString);\r
}\r
\r
public Query suggest(String queryString) throws ParseException {\r
-- QuerySuggester querySuggester = new QuerySuggester(defaultField, new StandardAnalyzer());\r
++ QuerySuggester querySuggester = new QuerySuggester(defaultField, new StandardAnalyzer(version));\r
Query query = querySuggester.parse(queryString);\r
return querySuggester.hasSuggestedQuery() ? query : null;\r
}\r
private class QuerySuggester extends QueryParser {\r
private boolean suggestedQuery = false;\r
public QuerySuggester(String field, Analyzer analyzer) {\r
-- super(field, analyzer);\r
++ super(version, field, analyzer);\r
}\r
protected Query getFieldQuery(String field, String queryText) throws ParseException {\r
// Copied from org.apache.lucene.queryParser.QueryParser\r
// replacing construction of TermQuery with call to getTermQuery()\r
// which finds close matches.\r
TokenStream source = getAnalyzer().tokenStream(field, new StringReader(queryText));\r
-- Vector v = new Vector();\r
++ Vector<Object> v = new Vector<Object>();\r
Token t;\r
\r
while (true) {\r
try {\r
-- t = source.next();\r
++ //OLD\r
++// t = source.next();\r
++ \r
++ //FIXME this is new after Hibernate 4 migration \r
++ //but completely unchecked and unsure if correct\r
++ //#3344\r
++ boolean it = source.incrementToken();\r
++ t = source.getAttribute(Token.class);\r
++ \r
++ \r
++ \r
} catch (IOException e) {\r
t = null;\r
}\r
-- if (t == null)\r
++ if (t == null){\r
break;\r
-- v.addElement(t.termText());\r
++ }\r
++ \r
++// OLD v.addElement(t.termText());\r
++ //FIXME unchecked #3344\r
++ v.addElement(t.term());\r
}\r
try {\r
source.close();\r
SpellChecker spellChecker = new SpellChecker(directory);\r
\r
for(Class<? extends T> indexedClass : indexedClasses) {\r
-- DirectoryProvider directoryProvider = searchFactory.getDirectoryProviders(indexedClass)[0];\r
-- ReaderProvider readerProvider = searchFactory.getReaderProvider();\r
++ //OLD\r
++// DirectoryProvider<?> directoryProvider = searchFactory.getDirectoryProviders(indexedClass)[0];\r
++// ReaderProvider readerProvider = searchFactory.getReaderProvider();\r
++ IndexReaderAccessor ira = searchFactory.getIndexReaderAccessor(); \r
++// IndexReader indexReader = ira.open(indexedClass);\r
IndexReader indexReader = null;\r
\r
try {\r
\r
-- indexReader = readerProvider.openReader(directoryProvider);\r
++ indexReader = ira.open(indexedClass);\r
++// indexReader = readerProvider.openIndexReader(); // .openReader(directoryProvider);\r
log.debug("Creating new dictionary for words in " + defaultField + " docs " + indexReader.numDocs());\r
\r
Dictionary dictionary = new LuceneDictionary(indexReader, defaultField);\r
if(log.isDebugEnabled()) {\r
-- Iterator iterator = dictionary.getWordsIterator();\r
-- while(iterator.hasNext()) {\r
-- log.debug("Indexing word " + iterator.next());\r
++ BytesRefIterator iterator = dictionary.getWordsIterator();\r
++ BytesRef bytesRef;\r
++ while((bytesRef = iterator.next()) != null) {\r
++ log.debug("Indexing word " + bytesRef);\r
}\r
}\r
\r
-- spellChecker.indexDictionary(dictionary);\r
++ \r
++// OLD: spellChecker.indexDictionary(dictionary);\r
++ //FIXME preliminary for Hibernate 4 migration see # 3344\r
++ IndexWriterConfig config = new IndexWriterConfig(version, new StandardAnalyzer(version)); \r
++ boolean fullMerge = true;\r
++ spellChecker.indexDictionary(dictionary, config, fullMerge);\r
++ \r
} catch (CorruptIndexException cie) {\r
log.error("Spellings index is corrupted", cie);\r
} finally {\r
if (indexReader != null) {\r
-- readerProvider.closeReader(indexReader);\r
++// readerProvider.closeIndexReader(indexReader);\r
++ ira.close(indexReader);\r
}\r
} \r
} \r
\r
import org.apache.log4j.Logger;\r
import org.hibernate.HibernateException;\r
--import org.hibernate.collection.PersistentCollection;\r
++import org.hibernate.collection.spi.PersistentCollection;\r
import org.hibernate.envers.entities.mapper.relation.lazy.proxy.CollectionProxy;\r
import org.hibernate.envers.entities.mapper.relation.lazy.proxy.MapProxy;\r
import org.hibernate.proxy.HibernateProxy;\r
import java.util.List;
import org.hibernate.Criteria;
--import org.hibernate.Query;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;
criteria.setProjection(Projections.countDistinct("id"));
-- return (Integer)criteria.uniqueResult();
++ return ((Number)criteria.uniqueResult()).intValue();
}
public List<Annotation> list(Person commentator, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
criteria.setProjection(Projections.countDistinct("id"));
-- return (Integer)criteria.uniqueResult();
++ return ((Number)criteria.uniqueResult()).intValue();
}
public List<Annotation> list(User creator, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
\r
import java.lang.reflect.Field;\r
import java.util.ArrayList;\r
--import java.util.Arrays;\r
import java.util.Collection;\r
import java.util.HashMap;\r
import java.util.Iterator;\r
import org.apache.log4j.Logger;\r
import org.apache.lucene.search.Sort;\r
import org.apache.lucene.search.SortField;\r
++import org.apache.lucene.util.Version;\r
import org.hibernate.Criteria;\r
import org.hibernate.HibernateException;\r
import org.hibernate.LockMode;\r
import eu.etaxonomy.cdm.model.common.VersionableEntity;\r
import eu.etaxonomy.cdm.persistence.dao.IBeanInitializer;\r
import eu.etaxonomy.cdm.persistence.dao.common.ICdmEntityDao;\r
++import eu.etaxonomy.cdm.persistence.dao.hibernate.AlternativeSpellingSuggestionParser;\r
import eu.etaxonomy.cdm.persistence.hibernate.replace.ReferringObjectMetadata;\r
import eu.etaxonomy.cdm.persistence.hibernate.replace.ReferringObjectMetadataFactory;\r
import eu.etaxonomy.cdm.persistence.query.Grouping;\r
import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
--import eu.etaxonomy.cdm.persistence.query.OrderHint.SortOrder;\r
\r
\r
/**\r
protected int flushAfterNo = 1000; //large numbers may cause synchronisation errors when commiting the session !!\r
\r
protected Class<T> type;\r
++ \r
++ //preliminary\r
++ protected Version version = AlternativeSpellingSuggestionParser.version;\r
++ \r
\r
@Autowired\r
// @Qualifier("defaultBeanInitializer")\r
\r
for(ReferringObjectMetadata referringObjectMetadata : referringObjectMetas) {\r
\r
-- List<CdmBase> referringObjects = referringObjectMetadata.getReferringObjects(x,getSession());\r
++ List<CdmBase> referringObjects = referringObjectMetadata.getReferringObjects(x, getSession());\r
\r
for(CdmBase referringObject : referringObjects) {\r
try {\r
criteria = session.createCriteria(clazz);\r
}\r
criteria.setProjection(Projections.projectionList().add(Projections.rowCount()));\r
-- return (Integer) criteria.uniqueResult();\r
++ \r
++ //since hibernate 4 (or so) uniqueResult returns Long, not Integer, therefore needs\r
++ //to be casted. Think about returning long rather then int!\r
++ return ((Number) criteria.uniqueResult()).intValue();\r
}\r
\r
public List<T> list(Integer limit, Integer start) {\r
}\r
\r
protected void addOrder(FullTextQuery fullTextQuery, List<OrderHint> orderHints) {\r
-- if(orderHints != null && !orderHints.isEmpty()) {\r
++ //FIXME preliminary hardcoded type:\r
++ int type = SortField.STRING;\r
++ \r
++ if(orderHints != null && !orderHints.isEmpty()) {\r
org.apache.lucene.search.Sort sort = new Sort();\r
SortField[] sortFields = new SortField[orderHints.size()];\r
for(int i = 0; i < orderHints.size(); i++) {\r
OrderHint orderHint = orderHints.get(i);\r
switch(orderHint.getSortOrder()) {\r
case ASCENDING:\r
-- sortFields[i] = new SortField(orderHint.getPropertyName(), true);\r
++ sortFields[i] = new SortField(orderHint.getPropertyName(), type, true);\r
break;\r
case DESCENDING:\r
default:\r
-- sortFields[i] = new SortField(orderHint.getPropertyName(),false);\r
++ sortFields[i] = new SortField(orderHint.getPropertyName(), type, false);\r
\r
}\r
}\r
addExample(criteria,example,includeProperties);\r
\r
criteria.setProjection(Projections.rowCount());\r
-- return (Integer)criteria.uniqueResult();\r
++ return ((Number)criteria.uniqueResult()).intValue();\r
}\r
\r
protected void addExample(Criteria criteria, T example, Set<String> includeProperties) {\r
criteria.setProjection(Projections.rowCount());\r
\r
List<T> result = criteria.list();\r
-- return (Integer)criteria.uniqueResult();\r
++ return ((Number)criteria.uniqueResult()).intValue();\r
}\r
\r
\r
import java.util.Map;
import java.util.Set;
--import javax.naming.NamingException;
import javax.naming.Reference;
import org.apache.commons.lang.StringUtils;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
--import org.hibernate.impl.SessionFactoryImpl;
--import org.hibernate.impl.SessionImpl;
++import org.hibernate.engine.spi.SessionFactoryImplementor;
++import org.hibernate.internal.SessionFactoryImpl;
++import org.hibernate.internal.SessionImpl;
import org.hibernate.metadata.ClassMetadata;
import org.hibernate.metadata.CollectionMetadata;
import org.hibernate.persister.collection.CollectionPersister;
import org.hibernate.type.FloatType;
import org.hibernate.type.IntegerType;
import org.hibernate.type.LongType;
++import org.hibernate.type.MaterializedClobType;
import org.hibernate.type.SerializableType;
import org.hibernate.type.SetType;
--import org.hibernate.type.StringClobType;
import org.hibernate.type.StringType;
import org.hibernate.type.Type;
--import org.joda.time.contrib.hibernate.PersistentDateTime;
++import org.jadira.usertype.dateandtime.joda.PersistentDateTime;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Repository;
}else if (propertyType.isCollectionType()){
CollectionType collectionType = (CollectionType)propertyType;
//String role = collectionType.getRole();
-- Type elType = collectionType.getElementType((SessionFactoryImpl)sessionFactory);
++ Type elType = collectionType.getElementType((SessionFactoryImplementor)sessionFactory);
makePropertyType(result, referencedClass, sessionFactory, cdmClass, elType, propertyName, true);
}else if (propertyType.isAnyType()){
AnyType anyType = (AnyType)propertyType;
StringType.class,
BooleanType.class,
IntegerType.class,
-- StringClobType.class,
++ MaterializedClobType.class,
LongType.class,
FloatType.class,
SerializableType.class,
try {
Reference ref = sessionFactory.getReference();
logger.debug("");
-- } catch (NamingException e) {
++ } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
++
//sessionFactory.get
ClassMetadata classMetadata = getSession().getSessionFactory().getClassMetadata(clazz);
Type[] propertyTypes = classMetadata.getPropertyTypes();
}else if (propertyType.isCollectionType()){
CollectionType collectionType = (CollectionType)propertyType;
String role = collectionType.getRole();
-- Type elType = collectionType.getElementType((SessionFactoryImpl)sessionFactory);
++ Type elType = collectionType.getElementType((SessionFactoryImplementor)sessionFactory);
String n = collectionType.getAssociatedEntityName(sessionFactory);
CollectionMetadata collMetadata = sessionFactory.getCollectionMetadata(role);
if (collMetadata instanceof OneToManyPersister){
criteria.createAlias("representations", "r").add(Restrictions.like("r.text", text));
--
-- criteria.setProjection(Projections.rowCount());
++ criteria.setProjection(Projections.rowCount());
-- return (Integer)criteria.uniqueResult();
++ return ((Number)criteria.uniqueResult()).intValue();
}
@Override
criteria.createAlias("representations", "r").add(Restrictions.like("r.abbreviatedLabel", text));
-- criteria.setProjection(Projections.rowCount());
++ criteria.setProjection(Projections.rowCount());
-- return (Integer)criteria.uniqueResult();
++ return ((Number)criteria.uniqueResult()).intValue();
}
criteria.setProjection(Projections.rowCount());
-- return (Integer)criteria.uniqueResult();
++ return ((Number)criteria.uniqueResult()).intValue();
} else {
AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(NamedArea.class,auditEvent.getRevisionNumber());
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
++import org.apache.lucene.util.Version;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import eu.etaxonomy.cdm.model.media.Rights;
import eu.etaxonomy.cdm.persistence.dao.QueryParseException;
import eu.etaxonomy.cdm.persistence.dao.common.IIdentifiableDao;
++import eu.etaxonomy.cdm.persistence.dao.hibernate.AlternativeSpellingSuggestionParser;
import eu.etaxonomy.cdm.persistence.query.MatchMode;
import eu.etaxonomy.cdm.persistence.query.OrderHint;
import eu.etaxonomy.cdm.persistence.query.OrderHint.SortOrder;
protected String defaultField = "titleCache_tokenized";
protected Class<? extends T> indexedClasses[];
++
++
public IdentifiableDaoBase(Class<T> type) {
super(type);
}
public int count(Class<? extends T> clazz, String queryString) {
checkNotInPriorView("IdentifiableDaoBase.count(Class<? extends T> clazz, String queryString)");
-- QueryParser queryParser = new QueryParser(defaultField , new StandardAnalyzer());
++ QueryParser queryParser = new QueryParser(version, defaultField , new StandardAnalyzer(version));
try {
org.apache.lucene.search.Query query = queryParser.parse(queryString);
public List<T> search(Class<? extends T> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints,List<String> propertyPaths) {
checkNotInPriorView("IdentifiableDaoBase.search(Class<? extends T> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints,List<String> propertyPaths)");
-- QueryParser queryParser = new QueryParser(defaultField, new StandardAnalyzer());
++ QueryParser queryParser = new QueryParser(version, defaultField, new StandardAnalyzer(version));
List<T> results = new ArrayList<T>();
try {
checkNotInPriorView("IdentifiableDaoBase.countByTitle(String queryString, CdmBase sessionObject)");
Criteria crit = session.createCriteria(type);
crit.add(Restrictions.ilike("titleCache", queryString));
-- Integer result = (Integer)crit.setProjection(Projections.rowCount()).uniqueResult();
++ Integer result = ((Number)crit.setProjection(Projections.rowCount()).uniqueResult()).intValue();
return result;
}
}
-- Integer result = (Integer)crit.setProjection(Projections.rowCount()).uniqueResult();
++ Integer result = ((Number)crit.setProjection(Projections.rowCount()).uniqueResult()).intValue();
return result;
}
Criteria criteria = getSession().createCriteria(Marker.class);\r
criteria.add(Restrictions.eq("markerType", markerType));\r
criteria.setProjection(Projections.rowCount());\r
-- return (Integer) criteria.uniqueResult();\r
++ return ((Number)criteria.uniqueResult()).intValue();\r
}\r
\r
public List<Marker> list(MarkerType markerType, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
criteria.add(Restrictions.eq("markerType", markerType));\r
}\r
criteria.setProjection(Projections.rowCount());\r
-- return (Integer) criteria.uniqueResult();\r
++ return ((Number)criteria.uniqueResult()).intValue();\r
}\r
\r
public List<Marker> list(User creator, MarkerType markerType, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(type,auditEvent.getRevisionNumber());\r
query.addProjection(AuditEntity.id().count("id"));\r
query.add(AuditEntity.relatedId("vocabulary").eq(termVocabulary.getId()));\r
-- return (Integer)query.getSingleResult();\r
++ return ((Number)query.getSingleResult()).intValue();\r
}\r
}\r
\r
import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
\r
public abstract class VersionableDaoBase<T extends VersionableEntity> extends CdmEntityDaoBase<T> implements IVersionableDao<T> {\r
-- @SuppressWarnings("unused")\r
private static final Logger logger = Logger.getLogger(VersionableDaoBase.class);\r
\r
protected AuditReader getAuditReader() {\r
\r
criteria.setProjection(Projections.rowCount());\r
\r
-- return (Integer)criteria.uniqueResult();\r
++ return ((Number)criteria.uniqueResult()).intValue();\r
} else {\r
if(features != null && !features.isEmpty()) {\r
Integer count = 0;\r
\r
inner.setProjection(Projections.countDistinct("id"));\r
\r
-- return (Integer) inner.uniqueResult();\r
++ return ((Number) inner.uniqueResult()).intValue();\r
}\r
\r
public int countTaxonDescriptions(Taxon taxon, Set<Scope> scopes,Set<NamedArea> geographicalScopes, Set<MarkerType> markerTypes) {\r
\r
criteria.setProjection(Projections.rowCount());\r
\r
-- return (Integer)criteria.uniqueResult();\r
++ return ((Number)criteria.uniqueResult()).intValue();\r
} else {\r
if((scopes == null || scopes.isEmpty())&& (geographicalScopes == null || geographicalScopes.isEmpty()) && (markerTypes == null || markerTypes.isEmpty())) {\r
AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(TaxonDescription.class,auditEvent.getRevisionNumber());\r
\r
criteria.setProjection(Projections.rowCount());\r
\r
-- return (Integer)criteria.uniqueResult();\r
++ return ((Number)criteria.uniqueResult()).intValue();\r
} else {\r
AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(TaxonNameDescription.class,auditEvent.getRevisionNumber());\r
\r
\r
Integer[] resultIds = new Integer[intermediateResult.size()];\r
for(int i = 0; i < resultIds.length; i++) {\r
-- resultIds[i] = (Integer)intermediateResult.get(i);\r
++ resultIds[i] = ((Number)intermediateResult.get(i)).intValue();\r
}\r
\r
Criteria outer = null;\r
Integer[] resultIds = new Integer[intermediateResult.size()];\r
for(int i = 0; i < resultIds.length; i++) {\r
if(orderHints == null || orderHints.isEmpty()) {\r
-- resultIds[i] = (Integer)intermediateResult.get(i);\r
++ resultIds[i] = ((Number)intermediateResult.get(i)).intValue();\r
} else {\r
-- resultIds[i] = (Integer)((Object[])intermediateResult.get(i))[0];\r
++ resultIds[i] = ((Number)((Object[])intermediateResult.get(i))[0]).intValue();\r
}\r
}\r
\r
public int count(Class<? extends DescriptionElementBase> clazz, String queryString) {
checkNotInPriorView("DescriptionElementDaoImpl.countTextData(String queryString)");
-- QueryParser queryParser = new QueryParser(defaultField, new StandardAnalyzer());
++ QueryParser queryParser = new QueryParser(version, defaultField, new StandardAnalyzer(version));
try {
org.apache.lucene.search.Query query = queryParser.parse(queryString);
public List<DescriptionElementBase> search(Class<? extends DescriptionElementBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
checkNotInPriorView("DescriptionElementDaoImpl.searchTextData(String queryString, Integer pageSize, Integer pageNumber)");
-- QueryParser queryParser = new QueryParser(defaultField, new StandardAnalyzer());
++ QueryParser queryParser = new QueryParser(version, defaultField, new StandardAnalyzer(version));
try {
org.apache.lucene.search.Query query = queryParser.parse(queryString);
public int count(String queryString) {
checkNotInPriorView("DescriptionElementDaoImpl.count(String queryString)");
-- QueryParser queryParser = new QueryParser(defaultField, new StandardAnalyzer());
++ QueryParser queryParser = new QueryParser(version, defaultField, new StandardAnalyzer(version));
try {
org.apache.lucene.search.Query query = queryParser.parse(queryString);
\r
criteria.setProjection(Projections.countDistinct("id"));\r
\r
-- return (Integer)criteria.uniqueResult();\r
++ return ((Number)criteria.uniqueResult()).intValue();\r
} else {\r
if((taxonomicScope == null || taxonomicScope.isEmpty()) && (geoScopes == null || geoScopes.isEmpty())) {\r
AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(MediaKey.class,auditEvent.getRevisionNumber());\r
@Qualifier("taxonNameDaoHibernateImpl")\r
public class TaxonNameDaoHibernateImpl extends IdentifiableDaoBase<TaxonNameBase> implements ITaxonNameDao {\r
\r
-- @SuppressWarnings("unused")\r
private static final Logger logger = Logger.getLogger(TaxonNameDaoHibernateImpl.class);\r
\r
@Autowired\r
}\r
criteria.setProjection(Projections.projectionList().add(Projections.rowCount()));\r
\r
-- return (Integer)criteria.uniqueResult();\r
++ return ((Number)criteria.uniqueResult()).intValue();\r
}\r
\r
public int countNames(String queryString, MatchMode matchMode, List<Criterion> criteria) {\r
}\r
\r
crit.setProjection(Projections.projectionList().add(Projections.rowCount()));\r
-- return (Integer)crit.uniqueResult();\r
++ return ((Number)crit.uniqueResult()).intValue();\r
}\r
\r
public int countNames(String genusOrUninomial, String infraGenericEpithet, String specificEpithet, String infraSpecificEpithet, Rank rank) {\r
}\r
\r
criteria.setProjection(Projections.rowCount());\r
-- return (Integer)criteria.uniqueResult();\r
++ return ((Number)criteria.uniqueResult()).intValue();\r
} else {\r
AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(TaxonNameBase.class,auditEvent.getRevisionNumber());\r
\r
return persistentObject.getUuid();\r
}\r
\r
++ /* (non-Javadoc)\r
++ * @see eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao#getZoologicalNames(java.lang.Integer, java.lang.Integer)\r
++ */\r
++ //TODO candidate for harmonization\r
public List<ZoologicalName> getZoologicalNames(Integer limit, Integer start){\r
List <TaxonNameBase> names = new ArrayList<TaxonNameBase>();\r
List <ZoologicalName> zooNames = new ArrayList<ZoologicalName>();\r
}\r
\r
criteria.setProjection(Projections.rowCount());\r
-- return (Integer)criteria.uniqueResult();\r
++ return ((Number)criteria.uniqueResult()).intValue();\r
} else {\r
AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(DeterminationEvent.class,auditEvent.getRevisionNumber());\r
\r
\r
criteria.createCriteria("determinations").add(Restrictions.eq("taxon", determinedAs));\r
criteria.setProjection(Projections.projectionList().add(Projections.rowCount()));\r
-- return (Integer) criteria.uniqueResult();\r
++ return ((Number)criteria.uniqueResult()).intValue();\r
}\r
\r
/* (non-Javadoc)\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.cdm.persistence.dao.hibernate.AlternativeSpellingSuggestionParser;\r
\r
--@Component\r
++//spelling support currently disabled in appcontext, see spelling.xml ... " \r
++//@Component\r
public class TaxonAlternativeSpellingSuggestionParser extends AlternativeSpellingSuggestionParser<TaxonBase> {\r
\r
public TaxonAlternativeSpellingSuggestionParser() {\r
import java.util.Collection;\r
import java.util.Collections;\r
import java.util.Comparator;\r
--import java.util.HashMap;\r
import java.util.HashSet;\r
import java.util.Iterator;\r
import java.util.List;\r
import java.util.TreeSet;\r
import java.util.UUID;\r
\r
--import org.apache.log4j.Level;\r
import org.apache.log4j.Logger;\r
import org.apache.lucene.queryParser.ParseException;\r
import org.hibernate.Criteria;\r
import org.springframework.dao.DataAccessException;\r
import org.springframework.stereotype.Repository;\r
\r
--import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
--import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
import eu.etaxonomy.cdm.model.common.LSID;\r
import eu.etaxonomy.cdm.model.common.OriginalSourceBase;\r
import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.name.TaxonNameComparator;\r
--import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
import eu.etaxonomy.cdm.model.reference.Reference;\r
import eu.etaxonomy.cdm.model.taxon.Classification;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.cdm.persistence.fetch.CdmFetch;\r
import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
--import eu.etaxonomy.cdm.persistence.query.OrderHint.SortOrder;\r
\r
\r
/**\r
@Autowired\r
private ITaxonNameDao taxonNameDao;\r
\r
-- @Autowired(required = false) //TODO switched of because it caused problems when starting CdmApplicationController\r
++// spelling support currently disabled in appcontext, see spelling.xml ... " \r
++// @Autowired(required = false) //TODO switched of because it caused problems when starting CdmApplicationController\r
public void setAlternativeSpellingSuggestionParser(AlternativeSpellingSuggestionParser<TaxonBase> alternativeSpellingSuggestionParser) {\r
this.alternativeSpellingSuggestionParser = alternativeSpellingSuggestionParser;\r
}\r
Criteria crit = getSession().createCriteria(type);\r
crit.add(Restrictions.ilike("titleCache", matchMode.queryStringFrom(queryString)));\r
crit.setProjection(Projections.rowCount());\r
-- int result = ((Integer)crit.list().get(0)).intValue();\r
++ int result = ((Number)crit.list().get(0)).intValue();\r
return result;\r
}\r
\r
}\r
}\r
crit.setProjection(Projections.rowCount());\r
-- int result = ((Integer)crit.list().get(0)).intValue();\r
++ int result = ((Number)crit.list().get(0)).intValue();\r
return result;\r
}\r
\r
criteria.add(Restrictions.eq("type", type));\r
}\r
criteria.setProjection(Projections.rowCount());\r
-- return (Integer)criteria.uniqueResult();\r
++ return ((Number)criteria.uniqueResult()).intValue();\r
} else {\r
AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(SynonymRelationship.class,auditEvent.getRevisionNumber());\r
query.add(AuditEntity.relatedId("relatedTo").eq(taxon.getId()));\r
}\r
\r
criteria.setProjection(Projections.rowCount());\r
-- return (Integer)criteria.uniqueResult();\r
++ return ((Number)criteria.uniqueResult()).intValue();\r
} else {\r
AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(SynonymRelationship.class,auditEvent.getRevisionNumber());\r
query.add(AuditEntity.relatedId("relatedFrom").eq(synonym.getId()));\r
\r
criteria.setProjection(Projections.projectionList().add(Projections.rowCount()));\r
\r
-- return (Integer)criteria.uniqueResult();\r
++ return ((Number)criteria.uniqueResult()).intValue();\r
}\r
\r
/*\r
\r
@Override\r
public TaxonBase find(LSID lsid) {\r
-- TaxonBase taxonBase = super.find(lsid);\r
++ TaxonBase<?> taxonBase = super.find(lsid);\r
if(taxonBase != null) {\r
List<String> propertyPaths = new ArrayList<String>();\r
propertyPaths.add("createdBy");\r
public List<TaxonBase> getTaxaByCommonName(String queryString,\r
Classification classification, MatchMode matchMode,\r
Set<NamedArea> namedAreas, Integer pageSize, Integer pageNumber) {\r
-- // TODO Auto-generated method stub\r
++ logger.warn("getTaxaByCommonName not yet implemented.");\r
return null;\r
}\r
\r
\r
import org.apache.log4j.Logger;\r
import org.hibernate.HibernateException;\r
--import org.hibernate.event.SaveOrUpdateEvent;\r
--import org.hibernate.event.SaveOrUpdateEventListener;\r
++import org.hibernate.event.spi.SaveOrUpdateEvent;\r
++import org.hibernate.event.spi.SaveOrUpdateEventListener;\r
import org.joda.time.DateTime;\r
import org.springframework.security.core.Authentication;\r
import org.springframework.security.core.context.SecurityContextHolder;\r
import java.io.Serializable;
import org.apache.log4j.Logger;
--import org.hibernate.event.AbstractEvent;
--import org.hibernate.event.EventSource;
--import org.hibernate.event.PostDeleteEvent;
--import org.hibernate.event.PostInsertEvent;
--import org.hibernate.event.PostLoadEvent;
--import org.hibernate.event.PostUpdateEvent;
++import org.hibernate.event.spi.AbstractEvent;
++import org.hibernate.event.spi.EventSource;
++import org.hibernate.event.spi.PostDeleteEvent;
++import org.hibernate.event.spi.PostInsertEvent;
++import org.hibernate.event.spi.PostLoadEvent;
++import org.hibernate.event.spi.PostUpdateEvent;
import org.hibernate.persister.entity.EntityPersister;
import eu.etaxonomy.cdm.model.common.CdmBase;
\r
import org.apache.log4j.Logger;\r
import org.hibernate.HibernateException;\r
--import org.hibernate.engine.EntityEntry;\r
--import org.hibernate.engine.Status;\r
--import org.hibernate.event.DeleteEvent;\r
--import org.hibernate.event.DeleteEventListener;\r
++import org.hibernate.engine.spi.EntityEntry;\r
++import org.hibernate.engine.spi.Status;\r
++import org.hibernate.event.spi.DeleteEvent;\r
++import org.hibernate.event.spi.DeleteEventListener;\r
++\r
\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
import eu.etaxonomy.cdm.model.common.IRelated;\r
import java.util.Set;
import org.apache.log4j.Logger;
--import org.hibernate.event.PostDeleteEvent;
--import org.hibernate.event.PostDeleteEventListener;
--import org.hibernate.event.PostInsertEvent;
--import org.hibernate.event.PostInsertEventListener;
--import org.hibernate.event.PostLoadEvent;
--import org.hibernate.event.PostLoadEventListener;
--import org.hibernate.event.PostUpdateEvent;
--import org.hibernate.event.PostUpdateEventListener;
++import org.hibernate.event.spi.PostDeleteEvent;
++import org.hibernate.event.spi.PostDeleteEventListener;
++import org.hibernate.event.spi.PostInsertEvent;
++import org.hibernate.event.spi.PostInsertEventListener;
++import org.hibernate.event.spi.PostLoadEvent;
++import org.hibernate.event.spi.PostLoadEventListener;
++import org.hibernate.event.spi.PostUpdateEvent;
++import org.hibernate.event.spi.PostUpdateEventListener;
import eu.etaxonomy.cdm.model.common.CdmBase;
\r
import org.apache.log4j.Logger;\r
import org.hibernate.HibernateException;\r
--import org.hibernate.event.SaveOrUpdateEvent;\r
--import org.hibernate.event.SaveOrUpdateEventListener;\r
++import org.hibernate.event.spi.SaveOrUpdateEvent;\r
++import org.hibernate.event.spi.SaveOrUpdateEventListener;\r
import org.joda.time.DateTime;\r
--import org.springframework.security.core.Authentication;\r
--import org.springframework.security.core.context.SecurityContextHolder;\r
\r
import eu.etaxonomy.cdm.model.common.ICdmBase;\r
\r
package eu.etaxonomy.cdm.persistence.hibernate;\r
\r
import org.hibernate.HibernateException;\r
--import org.hibernate.event.SaveOrUpdateEvent;\r
--import org.hibernate.event.SaveOrUpdateEventListener;\r
--\r
++import org.hibernate.event.spi.SaveOrUpdateEvent;\r
++import org.hibernate.event.spi.SaveOrUpdateEventListener;\r
import org.joda.time.DateTime;\r
import org.springframework.security.core.Authentication;\r
import org.springframework.security.core.context.SecurityContextHolder;\r
import eu.etaxonomy.cdm.model.common.VersionableEntity;\r
\r
\r
--\r
++@SuppressWarnings("serial")\r
public class SaveOrUpdateEntityListener implements SaveOrUpdateEventListener {\r
\r
public void onSaveOrUpdate(SaveOrUpdateEvent event)\r
*/
package eu.etaxonomy.cdm.persistence.hibernate;
--import java.io.Serializable;
import java.util.Properties;
import org.apache.log4j.Logger;
import org.hibernate.MappingException;
import org.hibernate.dialect.Dialect;
--import org.hibernate.engine.SessionImplementor;
import org.hibernate.type.Type;
/**
\r
import org.apache.log4j.Logger;\r
import org.hibernate.HibernateException;\r
--import org.hibernate.event.SaveOrUpdateEvent;\r
--import org.hibernate.event.SaveOrUpdateEventListener;\r
++import org.hibernate.event.spi.SaveOrUpdateEvent;\r
++import org.hibernate.event.spi.SaveOrUpdateEventListener;\r
import org.joda.time.DateTime;\r
import org.springframework.security.core.Authentication;\r
import org.springframework.security.core.context.SecurityContextHolder;\r
import org.hibernate.MappingException;
import org.hibernate.SessionFactory;
--import org.hibernate.impl.SessionFactoryImpl;
++import org.hibernate.internal.SessionFactoryImpl;
import org.hibernate.metadata.ClassMetadata;
import org.hibernate.type.AssociationType;
import org.hibernate.type.BagType;
public Set<ReferringObjectMetadata> get(Class<? extends CdmBase> toClass) {
if(!referringObjectMap.containsKey(toClass)) {
ClassMetadata toClassMetadata = sessionFactory.getClassMetadata(toClass);
-- Map<Class,Set<String>> bidirectionalRelationships = new HashMap<Class,Set<String>>();
++ Map<Class<?>,Set<String>> bidirectionalRelationships = new HashMap<Class<?>,Set<String>>();
for(String propertyName : toClassMetadata.getPropertyNames()) {
Type propertyType = toClassMetadata.getPropertyType(propertyName);
if(propertyType.isAssociationType() && !propertyType.isAnyType()) {
try {
field = toClass.getDeclaredField(propertyName);
} catch(NoSuchFieldException nsfe) {
-- Class superClass = toClass.getSuperclass();
++ Class<?> superClass = toClass.getSuperclass();
while(!superClass.equals(CdmBase.class)) {
try{
field = superClass.getDeclaredField(propertyName);
OneToMany oneToMany = field.getAnnotation(OneToMany.class);
if(oneToMany.mappedBy() != null && oneToMany.mappedBy().length() > 0) {
String associatedEntityName = associationType.getAssociatedEntityName((SessionFactoryImpl) sessionFactory.getCurrentSession().getSessionFactory());
-- Class associatedEntity;
++ Class<?> associatedEntity;
try {
associatedEntity = Class.forName(associatedEntityName);
if(!bidirectionalRelationships.containsKey(associatedEntity)) {
}
}
-- Map<Object,ClassMetadata> allClassMetadata = sessionFactory.getAllClassMetadata();
++ Map<String,ClassMetadata> allClassMetadata = sessionFactory.getAllClassMetadata();
Set<ReferringObjectMetadata> referringObjectMetadata = new HashSet<ReferringObjectMetadata>();
-- for(Object fromClass : allClassMetadata.keySet()) {
-- String entityName = (String) fromClass;
++ for(String entityName : allClassMetadata.keySet()) {
if(!entityName.endsWith("_AUD")) {
try {
// System.out.println(entityName);
-- Class entityClass = Class.forName(entityName);
++ Class<?> entityClass = Class.forName(entityName);
ClassMetadata classMetadata = allClassMetadata.get(entityName);
for(String propertyName : classMetadata.getPropertyNames()) {
if(!propertyType.isAnyType()) {
try {
String associatedEntityName = associationType.getAssociatedEntityName((SessionFactoryImpl) sessionFactory.getCurrentSession().getSessionFactory());
-- Class associatedClass = Class.forName(associatedEntityName);
++ Class<?> associatedClass = Class.forName(associatedEntityName);
if (associatedClass.isAssignableFrom(toClass)){
try {
import org.hibernate.Criteria;
--import org.hibernate.Hibernate;
import org.hibernate.criterion.CriteriaQuery;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
++import org.hibernate.type.IntegerType;
import org.hibernate.type.Type;
import eu.etaxonomy.cdm.persistence.query.OrderHint.SortOrder;
if(resolution.equals(Resolution.YEAR)) {
StringBuffer selectSqlString = getYearSelect();
StringBuffer projectSqlString = getYearProjection();
-- projectionList.add(Projections.sqlGroupProjection(selectSqlString.toString(), projectSqlString.toString(), new String[] {"year"}, new Type[] { Hibernate.INTEGER }),name);
++ projectionList.add(Projections.sqlGroupProjection(selectSqlString.toString(), projectSqlString.toString(), new String[] {"year"}, new Type[] { IntegerType.INSTANCE }),name);
} else if(resolution.equals(Resolution.MONTH)) {
StringBuffer selectSqlString = getYearMonthSelect();
StringBuffer projectSqlString = getYearMonthProjection();
-- projectionList.add(Projections.sqlGroupProjection(selectSqlString.toString(), projectSqlString.toString(), new String[] {"year","month"}, new Type[] { Hibernate.INTEGER, Hibernate.INTEGER }),name);
++ projectionList.add(Projections.sqlGroupProjection(selectSqlString.toString(), projectSqlString.toString(), new String[] {"year","month"}, new Type[] { IntegerType.INSTANCE, IntegerType.INSTANCE }),name);
} else {
StringBuffer selectSqlString = getYearMonthDaySelect();
StringBuffer projectSqlString = getYearMonthDayProjection();
-- projectionList.add(Projections.sqlGroupProjection(selectSqlString.toString(), projectSqlString.toString(), new String[] {"year","month", "day"}, new Type[] { Hibernate.INTEGER, Hibernate.INTEGER, Hibernate.INTEGER }),name);
++ projectionList.add(Projections.sqlGroupProjection(selectSqlString.toString(), projectSqlString.toString(), new String[] {"year","month", "day"}, new Type[] { IntegerType.INSTANCE, IntegerType.INSTANCE, IntegerType.INSTANCE }),name);
}
}
import org.hibernate.criterion.CriteriaQuery;
import org.hibernate.criterion.Order;
import org.hibernate.envers.query.AuditQuery;
--import org.hibernate.util.StringHelper;
++import org.hibernate.internal.util.StringHelper;
import eu.etaxonomy.cdm.persistence.dao.common.OperationNotSupportedInPriorViewException;
}
public class NativeSqlHibernateOrder extends Order {
++ private static final long serialVersionUID = 6439553377404790090L;
++
private String nativeSQL;
private Boolean ascending;
import org.hibernate.criterion.CriteriaQuery;
import org.hibernate.criterion.Order;
import org.hibernate.envers.query.AuditQuery;
--import org.hibernate.util.StringHelper;
++import org.hibernate.internal.util.StringHelper;
import eu.etaxonomy.cdm.persistence.dao.common.OperationNotSupportedInPriorViewException;
}
public class RandomHibernateOrder extends Order {
++ private static final long serialVersionUID = 8231534219451938847L;
++
protected RandomHibernateOrder() {
super(RandomOrder.PROPERTY_NAME, true);
criteriaQuery.getSQLAlias(criteria));
}
}
++
@Override
public void add(AuditQuery query) {
throw new OperationNotSupportedInPriorViewException("You cannot sort in a random order in the history view");
* This fixes #\r
*\r
*/\r
--public class CollectionChangeWorkUnit extends AbstractAuditWorkUnit implements AuditWorkUnit {\r
-- private final Object entity;\r
--\r
-- public CollectionChangeWorkUnit(String entityName, AuditConfiguration verCfg, Serializable id, Object entity) {\r
-- super(entity.getClass().getCanonicalName(), verCfg, id);\r
--// OLD: super(entityName, verCfg, id);\r
--\r
-- this.entity = entity;\r
-- }\r
--\r
-- public boolean containsWork() {\r
-- return true;\r
-- }\r
--\r
-- public void perform(Session session, Object revisionData) {\r
-- Map<String, Object> data = new HashMap<String, Object>();\r
-- fillDataWithId(data, revisionData, RevisionType.MOD);\r
--\r
-- verCfg.getEntCfg().get(getEntityName()).getPropertyMapper().mapToMapFromEntity(data, entity, null);\r
--\r
-- session.save(verCfg.getAuditEntCfg().getAuditEntityName(getEntityName()), data);\r
--\r
-- setPerformed(data);\r
-- }\r
--\r
-- public KeepCheckResult check(AddWorkUnit second) {\r
-- return KeepCheckResult.SECOND;\r
-- }\r
--\r
-- public KeepCheckResult check(ModWorkUnit second) {\r
-- return KeepCheckResult.SECOND;\r
-- }\r
--\r
-- public KeepCheckResult check(DelWorkUnit second) {\r
-- return KeepCheckResult.SECOND;\r
-- }\r
--\r
-- public KeepCheckResult check(CollectionChangeWorkUnit second) {\r
-- return KeepCheckResult.FIRST;\r
-- }\r
--\r
-- public KeepCheckResult dispatch(KeepCheckVisitor first) {\r
-- return first.check(this);\r
-- }\r
--}\r
++//public class CollectionChangeWorkUnit extends AbstractAuditWorkUnit implements AuditWorkUnit {\r
++// private final Object entity;\r
++//\r
++// private xx;\r
++// //TODO is this class still needed? It overrides an old envers class. Maybe fixed in current envers version. \r
++// \r
++// public CollectionChangeWorkUnit(String entityName, AuditConfiguration verCfg, Serializable id, Object entity) {\r
++// super(entity.getClass().getCanonicalName(), verCfg, id);\r
++//// OLD: super(entityName, verCfg, id);\r
++//\r
++// this.entity = entity;\r
++// }\r
++//\r
++// public boolean containsWork() {\r
++// return true;\r
++// }\r
++//\r
++// public void perform(Session session, Object revisionData) {\r
++// Map<String, Object> data = new HashMap<String, Object>();\r
++// fillDataWithId(data, revisionData, RevisionType.MOD);\r
++//\r
++// verCfg.getEntCfg().get(getEntityName()).getPropertyMapper().mapToMapFromEntity(data, entity, null);\r
++//\r
++// session.save(verCfg.getAuditEntCfg().getAuditEntityName(getEntityName()), data);\r
++//\r
++// setPerformed(data);\r
++// }\r
++//\r
++// public KeepCheckResult check(AddWorkUnit second) {\r
++// return KeepCheckResult.SECOND;\r
++// }\r
++//\r
++// public KeepCheckResult check(ModWorkUnit second) {\r
++// return KeepCheckResult.SECOND;\r
++// }\r
++//\r
++// public KeepCheckResult check(DelWorkUnit second) {\r
++// return KeepCheckResult.SECOND;\r
++// }\r
++//\r
++// public KeepCheckResult check(CollectionChangeWorkUnit second) {\r
++// return KeepCheckResult.FIRST;\r
++// }\r
++//\r
++// public KeepCheckResult dispatch(KeepCheckVisitor first) {\r
++// return first.check(this);\r
++// }\r
++//}\r
<props>\r
<prop key="hibernate.hbm2ddl.auto">create</prop>\r
<prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>\r
-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>\r
++ <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</prop>\r
<prop key="hibernate.search.autoregister_listeners">false</prop>\r
<prop key="hibernate.show_sql">false</prop>\r
<prop key="hibernate.format_sql">false</prop>\r
<?xml version="1.0" encoding="UTF-8"?>\r
<!DOCTYPE hibernate-configuration PUBLIC\r
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"\r
-- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">\r
++ "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">\r
\r
<hibernate-configuration>\r
<session-factory>\r
<property name="connection.release_mode">after_transaction</property>\r
\r
<!-- Connection Pooling -->\r
-- <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>\r
++<!-- <property name="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</property> -->\r
++ <property name="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl</property>\r
<!--\r
Configuring the C3P0ConnectionProvider\r
========================================\r
\r
IMPORTANT:\r
Because of the constraint (1) the org.hibernate.connection.C3P0ConnectionProvider are not be used\r
-- for the cdm library because it requires the dataSource bean in some cases.\r
++ for the Cdm Library because it requires the dataSource bean in some cases.\r
\r
(1)\r
Do NOT specify the dataSource in the sessionFactory for example in the\r
avoid meaningless double configuration.\r
(2)\r
Hibernate uses the hibernate.c3p0.max_size property to determine if c3p0\r
-- is begin used. Therefore the max_size property MUST be set. - maybe not need in hibernate 3.4 +\r
++ is beeing used. Therefore the max_size property MUST be set. - maybe not need in hibernate 3.4 +\r
\r
(3) If you are using Hibernate's C3P0ConnectionProvider you must set the following properties\r
in your hibernate configuration, using hibernate-specific configuration keys.\r
<mapping class="eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase"/>\r
<!-- Reference Package -->\r
<mapping class="eu.etaxonomy.cdm.model.reference.Reference"/>\r
-- <!--\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.Article"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.Book"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.BookSection"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.CdDvd"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.Database"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.Generic"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.InProceedings"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.Journal"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.Map"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.Patent"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.PersonalCommunication"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.PrintedUnitBase"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.PrintSeries"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.Proceedings"/>\r
\r
--\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.ReferenceIdentity"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.Report"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.SectionBase"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.Thesis"/>\r
-- <mapping class="eu.etaxonomy.cdm.model.reference.WebPage"/>\r
-- -->\r
<!-- Taxon Package -->\r
<mapping class="eu.etaxonomy.cdm.model.taxon.Synonym"/>\r
<mapping class="eu.etaxonomy.cdm.model.taxon.SynonymRelationship"/>\r
<props>\r
<prop key="hibernate.hbm2ddl.auto">create</prop>\r
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>\r
-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>\r
++ <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</prop>\r
<prop key="hibernate.search.autoregister_listeners">false</prop>\r
<prop key="hibernate.show_sql">false</prop>\r
<prop key="hibernate.format_sql">false</prop>\r
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
">
-- <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
++ <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
-- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" depends-on="tableGeneratorGlobalOverride">
++ <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" depends-on="tableGeneratorGlobalOverride">
<property name="namingStrategy">
<bean class="org.hibernate.cfg.DefaultComponentSafeNamingStrategy" />
</property>
--<!-- <property name="entityInterceptor">
++<!-- <property name="entityInterceptor">
<bean class="eu.etaxonomy.cdm.persistence.hibernate.CdmHibernateInterceptor" />
</property>
-- -->
++-->
<property name="configLocation" value="classpath:eu/etaxonomy/cdm/hibernate.cfg.xml"/>
-- <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration"/>
++
++<!-- Looks like this is not needed anymore for hibernate 4 -->
++<!-- <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration"/> -->
++
<!--
If dataSource is set, this will override corresponding settings in Hibernate properties.
If this is set, the Hibernate settings should not define a connection provider to
see also org.springframework.orm.hibernate3.AbstractSessionFactoryBean.setDataSource(DataSource dataSource)
-->
<property name="dataSource" ref="dataSource"/>
++
<property name="hibernateProperties" ref="hibernateProperties"/>
</bean>
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd\r
">\r
\r
-- <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">\r
++ <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">\r
<property name="sessionFactory" ref="sessionFactory" />\r
</bean>\r
\r
-- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" depends-on="tableGeneratorGlobalOverride">\r
++ <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" depends-on="tableGeneratorGlobalOverride">\r
<property name="namingStrategy">\r
<bean class="org.hibernate.cfg.DefaultComponentSafeNamingStrategy" />\r
</property>\r
<property name="entityInterceptor" ref="securityHibernateInterceptor" />\r
\r
<property name="configLocation" value="classpath:eu/etaxonomy/cdm/hibernate.cfg.xml"/>\r
-- <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration"/>\r
++ \r
++ <!-- Looks like this is not needed anymore for hibernate 4 -->\r
++<!-- <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration"/> -->\r
++ \r
<!--\r
If dataSource is set, this will override corresponding settings in Hibernate properties.\r
If this is set, the Hibernate settings should not define a connection provider to\r
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd\r
">\r
\r
-- <bean id="taxonSpellingDirectory" class="org.springmodules.lucene.index.support.FSDirectoryFactoryBean">\r
-- <!-- TODO location -->\r
++<!-- We do not use spelling suggestions anymore. This one relates to springmodules which is -->\r
++<!-- somewhat outdated. Once we work again with spelling suggestions we better use a modern -->\r
++<!-- approache, e.g. annotation based. -->\r
++ <!-- <bean id="taxonSpellingDirectory" class="org.springmodules.lucene.index.support.FSDirectoryFactoryBean">\r
++ TODO location\r
<property name="location" value="file:./target/test-classes/eu.etaxonomy.cdm.model.taxon.TaxonBase_spelling"/>\r
--<!-- <property name="location" value="file:\\C:\localCopy\eclipse\cdmlib\cdmlib-persistence\target\test-classes\eu.etaxonomy.cdm.model.taxon.TaxonBase_spelling"/>-->\r
--<!-- <property name="location" value="file:\\C:\tmpXXX\eu.etaxonomy.cdm.model.taxon.TaxonBase_spelling"/>-->\r
-- \r
<property name="create" value="false"/>\r
</bean>\r
\r
<property name="analyzer">\r
<bean class="org.apache.lucene.analysis.SimpleAnalyzer"/>\r
</property>\r
-- </bean>\r
++ </bean> -->\r
\r
\r
</beans>\r
import java.util.Properties;\r
\r
import org.apache.log4j.Logger;\r
--import org.hibernate.cache.CacheProvider;\r
--import org.hibernate.cache.NoCacheProvider;\r
++import org.hibernate.cache.internal.NoCachingRegionFactory;\r
++import org.hibernate.cache.spi.RegionFactory;\r
import org.junit.After;\r
import org.junit.AfterClass;\r
import org.junit.Before;\r
Properties properties = (Properties)propValue.getValue();\r
assertEquals(hbm2dll.toString(), properties.getProperty("hibernate.hbm2ddl.auto"));\r
assertEquals(dataSource.getDatabaseType().getHibernateDialect(), properties.getProperty("hibernate.dialect"));\r
-- assertEquals(NoCacheProvider.class.getName(), properties.getProperty("hibernate.cache.provider_class"));\r
++ assertEquals(NoCachingRegionFactory.class.getName(), properties.getProperty("hibernate.cache.region.factory_class"));\r
assertEquals(String.valueOf(false), properties.getProperty("hibernate.show_sql"));\r
assertEquals(String.valueOf(false), properties.getProperty("hibernate.format_sql"));\r
\r
boolean showSql = false;\r
boolean formatSql = false;\r
boolean registerSearchListener = false;\r
-- Class<? extends CacheProvider> cacheProviderClass = NoCacheProvider.class;\r
++ Class<? extends RegionFactory> cacheProviderClass = NoCachingRegionFactory.class;\r
\r
BeanDefinition beanDef = dataSource.getHibernatePropertiesBean(hbm2dll, showSql, formatSql, registerSearchListener, cacheProviderClass);\r
PropertyValues propValues = beanDef.getPropertyValues();\r
Properties properties = (Properties)propValue.getValue();\r
assertEquals(hbm2dll.toString(), properties.getProperty("hibernate.hbm2ddl.auto"));\r
assertEquals(dataSource.getDatabaseType().getHibernateDialect(), properties.getProperty("hibernate.dialect"));\r
-- assertEquals(cacheProviderClass.getName(), properties.getProperty("hibernate.cache.provider_class"));\r
++ assertEquals(cacheProviderClass.getName(), properties.getProperty("hibernate.cache.region.factory_class"));\r
assertEquals(String.valueOf(showSql), properties.getProperty("hibernate.show_sql"));\r
assertEquals(String.valueOf(formatSql), properties.getProperty("hibernate.format_sql"));\r
}\r
import java.util.UUID;\r
\r
import org.hibernate.Hibernate;\r
--import org.hibernate.collection.PersistentCollection;\r
--import org.hibernate.envers.entities.mapper.relation.lazy.proxy.CollectionProxy;\r
--import org.hibernate.envers.entities.mapper.relation.lazy.proxy.MapProxy;\r
--import org.hibernate.proxy.HibernateProxy;\r
import org.junit.After;\r
import org.junit.Before;\r
import org.junit.Ignore;\r
import eu.etaxonomy.cdm.model.view.context.AuditEventContextHolder;\r
import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionElementDao;\r
import eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao;\r
--import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
\r
@DataSet\r
@Ignore //TODO indexing does not work at all, even before the unitils upgrade\r
public class FreeTextSearchIntegration extends CdmTransactionalIntegrationTest {\r
\r
++ @SuppressWarnings("unused")\r
private static Log log = LogFactory.getLog(FreeTextSearchIntegration.class);\r
\r
@SpringBeanByType\r
}\r
\r
@Test\r
++ @Ignore //we currently don't use suggest anymore\r
public void testSuggestSingleTerm() {\r
String suggestion = taxonDao.suggestQuery("Aram");\r
assertNotNull("suggestQuery should return a String",suggestion);\r
}\r
\r
@Test\r
++ @Ignore //we currently don't use suggest anymore\r
public void testSuggestSingleTermInCompositeQuery() {\r
String suggestion = taxonDao.suggestQuery("Aram italicum");\r
assertNotNull("suggestQuery should return a String",suggestion);\r
}\r
\r
@Test\r
++ @Ignore //we currently don't use suggest anymore\r
public void testSuggestMultipleTermsInCompositeQuery() {\r
String suggestion = taxonDao.suggestQuery("Aram italocum");\r
assertNotNull("suggestQuery should return a String",suggestion);\r
}\r
\r
@Test\r
++ @Ignore //we currently don't use suggest anymore\r
public void testSuggestMultipleTermsInCompositeQueryWithAnd() {\r
String suggestion = taxonDao.suggestQuery("Aram AND italocum");\r
assertNotNull("suggestQuery should return a String",suggestion);\r
import java.util.List;\r
import java.util.UUID;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.junit.After;\r
import org.junit.Before;\r
--import org.junit.Ignore;\r
import org.junit.Test;\r
--import org.springframework.test.context.transaction.TransactionConfiguration;\r
import org.unitils.dbunit.annotation.DataSet;\r
import org.unitils.dbunit.annotation.ExpectedDataSet;\r
import org.unitils.spring.annotation.SpringBeanByType;\r
import eu.etaxonomy.cdm.model.agent.InstitutionalMembership;\r
import eu.etaxonomy.cdm.model.agent.Person;\r
import eu.etaxonomy.cdm.model.agent.Team;\r
++import eu.etaxonomy.cdm.model.common.TimePeriod;\r
import eu.etaxonomy.cdm.model.view.AuditEvent;\r
import eu.etaxonomy.cdm.model.view.context.AuditEventContextHolder;\r
import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao;\r
assert person != null : "person must exist";\r
person.setFirstname("Benjamin");\r
agentDao.update(person);\r
-- setComplete();\r
-- endTransaction();\r
++// commitAndStartNewTransaction(new String[]{"AGENTBASE_AUD","AGENTBASE"});\r
++ commit();\r
}\r
\r
@Test\r
import java.util.List;\r
import java.util.UUID;\r
\r
--import junit.framework.Assert;\r
--\r
++import org.junit.Assert;\r
import org.junit.Before;\r
import org.junit.Test;\r
import org.springframework.security.authentication.AuthenticationManager;\r
import org.springframework.security.authentication.TestingAuthenticationToken;\r
import org.springframework.security.core.Authentication;\r
--import org.springframework.security.core.context.SecurityContext;\r
import org.springframework.security.core.context.SecurityContextHolder;\r
import org.springframework.security.core.context.SecurityContextImpl;\r
--import org.unitils.database.annotations.Transactional;\r
--import org.unitils.database.util.TransactionMode;\r
import org.unitils.dbunit.annotation.DataSet;\r
import org.unitils.dbunit.annotation.ExpectedDataSet;\r
import org.unitils.spring.annotation.SpringBeanByType;\r
\r
--import eu.etaxonomy.cdm.database.EvaluationFailedException;\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
--import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;\r
--import eu.etaxonomy.cdm.model.common.User;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.cdm.persistence.dao.common.IUserDao;\r
import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;\r
import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
import eu.etaxonomy.cdm.persistence.query.RandomOrder;\r
--import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTestWithSecurity;\r
\r
/**\r
\r
private static final UUID UUID_USER_BEN = UUID.fromString("dbac0f20-07f2-11de-8c30-0800200c9a66");\r
private UUID uuid;\r
-- private TaxonBase cdmBase;\r
++ private TaxonBase<?> cdmBase;\r
\r
@SpringBeanByType\r
private ITaxonDao cdmEntityDaoBase;\r
@DataSet("CdmEntityDaoBaseTest.xml")\r
@ExpectedDataSet\r
public void testSaveOrUpdate() {\r
-- TaxonBase cdmBase = cdmEntityDaoBase.findByUuid(uuid);\r
++ TaxonBase<?> cdmBase = cdmEntityDaoBase.findByUuid(uuid);\r
cdmBase.setDoubtful(true);\r
cdmEntityDaoBase.saveOrUpdate(cdmBase);\r
++ commit();\r
}\r
\r
/**\r
public void testSaveOrUpdateWithAuthentication() {\r
\r
setAuthentication(taxonEditorToken);\r
-- TaxonBase cdmBase = cdmEntityDaoBase.findByUuid(uuid);\r
++ TaxonBase<?> cdmBase = cdmEntityDaoBase.findByUuid(uuid);\r
cdmBase.setDoubtful(true);\r
cdmEntityDaoBase.saveOrUpdate(cdmBase);\r
++ commit();\r
}\r
\r
/**\r
@ExpectedDataSet\r
public void testSave() throws Exception {\r
cdmEntityDaoBase.save(cdmBase);\r
++ commit();\r
}\r
\r
\r
@DataSet("CdmEntityDaoBaseTest.xml")\r
@ExpectedDataSet\r
public void testUpdate() {\r
-- TaxonBase cdmBase = cdmEntityDaoBase.findByUuid(uuid);\r
++ TaxonBase<?> cdmBase = cdmEntityDaoBase.findByUuid(uuid);\r
cdmBase.setDoubtful(true);\r
cdmEntityDaoBase.update(cdmBase);\r
++ commit();\r
}\r
\r
@Test\r
public void testUpdateWithAuthentication() {\r
\r
setAuthentication(taxonEditorToken);\r
-- TaxonBase cdmBase = cdmEntityDaoBase.findByUuid(uuid);\r
++ TaxonBase<?> cdmBase = cdmEntityDaoBase.findByUuid(uuid);\r
cdmBase.setDoubtful(true);\r
RuntimeException securityException = null;\r
try {\r
@DataSet("CdmEntityDaoBaseTest.xml")\r
@ExpectedDataSet\r
public void testDelete() {\r
-- TaxonBase cdmBase = cdmEntityDaoBase.findByUuid(uuid);\r
++ TaxonBase<?> cdmBase = cdmEntityDaoBase.findByUuid(uuid);\r
assertNotNull(cdmBase);\r
cdmEntityDaoBase.delete(cdmBase);\r
}\r
@Test
public void getLanguageByIso2() {
Language lang = dao.getLanguageByIso("arm");
++ assertNotNull(lang);
assertEquals("getLanguageByIso should return the correct Language instance",lang.getUuid(), armUuid);
}
@Test
public void getLanguageByIso1() {
Language lang = dao.getLanguageByIso("hy");
++ assertNotNull(lang);
assertEquals("getLanguageByIso should return the correct Language instance",lang.getUuid(), armUuid);
}
@Test\r
public void testGetByLsidWithoutVersion() throws Exception {\r
LSID lsid = new LSID("urn:lsid:example.org:namespace:1");\r
-- TaxonBase result = identifiableDao.find(lsid);\r
++ TaxonBase<?> result = identifiableDao.find(lsid);\r
assertNotNull(result);\r
}\r
\r
@Test\r
public void testGetByLsidWithVersionCurrent() throws Exception {\r
LSID lsid = new LSID("urn:lsid:example.org:namespace:1:2");\r
-- TaxonBase result = identifiableDao.find(lsid);\r
++ TaxonBase<?> result = identifiableDao.find(lsid);\r
assertNotNull(result);\r
}\r
\r
@Test\r
public void testGetByLsidWithVersionPast() throws Exception {\r
LSID lsid = new LSID("urn:lsid:example.org:namespace:1:1");\r
-- TaxonBase result = identifiableDao.find(lsid);\r
++ TaxonBase<?> result = identifiableDao.find(lsid);\r
assertNotNull(result);\r
}\r
\r
import java.util.Set;
import java.util.UUID;
--import junit.framework.Assert;
--
import org.hibernate.Hibernate;
++import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
--import org.unitils.database.annotations.Transactional;
--import org.unitils.database.util.TransactionMode;
import org.unitils.dbunit.annotation.DataSet;
import org.unitils.spring.annotation.SpringBeanByType;
import eu.etaxonomy.cdm.model.description.TextData;
import eu.etaxonomy.cdm.model.location.NamedArea;
import eu.etaxonomy.cdm.model.media.Media;
--import eu.etaxonomy.cdm.model.name.BotanicalName;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;
import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionDao;
import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;
import eu.etaxonomy.cdm.persistence.query.OrderHint;
import eu.etaxonomy.cdm.persistence.query.OrderHint.SortOrder;
--import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
@DataSet
@Test
public void testCountDescriptionElements() {
-- DescriptionBase description = descriptionDao.findByUuid(uuid);
++ DescriptionBase<?> description = descriptionDao.findByUuid(uuid);
assert description != null : "description must exist";
int numberOfDescriptionElements = descriptionDao.countDescriptionElements(description, null, TextData.class);
@Test
public void testGetDescriptionElements() {
-- DescriptionBase description = descriptionDao.findByUuid(uuid);
++ DescriptionBase<?> description = descriptionDao.findByUuid(uuid);
assert description != null : "description must exist";
List<String> propertyPaths = new ArrayList<String>();
propertyPaths.add("multilanguageText");
propertyPaths.add("media");
-- propertyPaths.add("citation");
propertyPaths.add("feature");
-- propertyPaths.add("sources");
++ propertyPaths.add("sources.citation");
List<DescriptionElementBase> elements = descriptionDao.getDescriptionElements(description, null, TextData.class, null, null,propertyPaths);
@Test
public void testCountDescriptionElementsFeature() {
features.add(Feature.ECOLOGY());
-- DescriptionBase description = descriptionDao.findByUuid(uuid);
++ DescriptionBase<?> description = descriptionDao.findByUuid(uuid);
assert description != null : "description must exist";
int numberOfDescriptionElements = descriptionDao.countDescriptionElements(description, features, TextData.class);
@Test
public void testGetDescriptionElementsByFeature() {
features.add(Feature.ECOLOGY());
-- DescriptionBase description = descriptionDao.findByUuid(uuid);
++ DescriptionBase<?> description = descriptionDao.findByUuid(uuid);
assert description != null : "description must exist";
List<DescriptionElementBase> elements = descriptionDao.getDescriptionElements(description, features, TextData.class, null, null,null);
import java.util.List;
import java.util.UUID;
--import junit.framework.Assert;
--
++import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.unitils.dbunit.annotation.DataSet;
import eu.etaxonomy.cdm.model.description.IIdentificationKey;
import eu.etaxonomy.cdm.model.description.MediaKey;
--import eu.etaxonomy.cdm.model.description.MultiAccessKey;
import eu.etaxonomy.cdm.model.description.PolytomousKey;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.cdm.persistence.dao.description.IIdentificationKeyDao;
package eu.etaxonomy.cdm.persistence.dao.hibernate.media;
import static org.junit.Assert.assertEquals;
--import static org.junit.Assert.assertFalse;
--import static org.junit.Assert.assertNotNull;
--import static org.junit.Assert.assertTrue;
import java.net.URI;
import java.net.URISyntaxException;
import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;
import eu.etaxonomy.cdm.persistence.dao.media.IMediaRepresentationPartDao;
--import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
--//import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
++import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
@DataSet
--public class MediaRepresentationPartDaoImplTest extends /*CdmTransactionalIntegrationTest*/CdmIntegrationTest {
++public class MediaRepresentationPartDaoImplTest extends CdmTransactionalIntegrationTest {
@SpringBeanByType
IMediaRepresentationPartDao dao;
try {
MediaRepresentationPart part3 = dao.findByUuid(UUID.fromString("b48a0f26-2f42-3ce3-8a04-dd98feaa8e98"));
--// Assert.assertEquals("part URI should be http://www.test2.de", new URI("http://www.test2.de"), part3.getUri());
++ Assert.assertEquals("part URI should be http://www.test2.de", new URI("http://www.test2.de"), part3.getUri());
Assert.fail("A TypeMismatchException should occurr for http://www.fail.de");
} catch (Exception e) {
if (e instanceof TypeMismatchException){
MediaRepresentation representation = MediaRepresentation.NewInstance();
representation.addRepresentationPart(part1);
dao.save(part1);
--
--// TaxonNameBase name = nameService.find(UUID.fromString("5d74500b-9fd5-4d18-b9cd-cc1c8a372fec"));
--// System.out.println(name.getRank().getLabel());
--// setComplete();
--// endTransaction();
--// try {
--// printDataSet(System.out, new String[]{"MediaRepresentationPart"});
--// } catch(Exception e) {
--// logger.warn(e);
--// }
--
--
++ commit();
} catch (URISyntaxException e) {
Assert.fail("URI should be ok");
--- /dev/null
-import junit.framework.Assert;\r
-\r
+ package eu.etaxonomy.cdm.persistence.dao.hibernate.molecular;\r
+ \r
+ import java.util.Set;\r
+ import java.util.UUID;\r
+ \r
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
++import org.junit.Assert;\r
+ import org.junit.Before;\r
+ import org.junit.BeforeClass;\r
+ import org.junit.Test;\r
+ import org.unitils.spring.annotation.SpringBeanByType;\r
+ \r
+ import eu.etaxonomy.cdm.model.molecular.DnaSample;\r
+ import eu.etaxonomy.cdm.model.molecular.GenBankAccession;\r
+ import eu.etaxonomy.cdm.model.molecular.Locus;\r
+ import eu.etaxonomy.cdm.model.molecular.Sequence;\r
+ import eu.etaxonomy.cdm.persistence.dao.occurrence.IOccurrenceDao;\r
+ import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
+ \r
+ public class MolecularHibernateImplTest extends CdmTransactionalIntegrationTest {\r
+ \r
+ final static UUID uuidSample1 = UUID.fromString("4b451275-655f-40d6-8d4b-0203574bef15");\r
+ \r
+ @SpringBeanByType\r
+ private IOccurrenceDao occurrenceDao;\r
+ \r
+ @BeforeClass\r
+ public static void setUpBeforeClass() throws Exception {\r
+ }\r
+ \r
+ @Before\r
+ public void setUp() throws Exception {\r
+ }\r
+ \r
+ //**************** TESTS ************************************************ \r
+ \r
+ //Test if DnaSample can be loaded and if Sequence, Locus and GenBankAccession data can \r
+ //be lazy loaded from database\r
+ //#3340\r
+ @Test\r
+ public void testLazyLoadSequenceLocusGenbankaccession() {\r
+ createTestData();\r
+ DnaSample sample1 = (DnaSample)occurrenceDao.findByUuid(uuidSample1);\r
+ Set<Sequence> sequences = sample1.getSequences();\r
+ \r
+ Sequence sequence = sequences.iterator().next();\r
+ Locus locus = sequence.getLocus();\r
+ Assert.assertEquals("Locus", locus.getName());\r
+ Set<GenBankAccession> accessions = sequence.getGenBankAccession();\r
+ GenBankAccession accession = accessions.iterator().next();\r
+ Assert.assertEquals("123", accession.getAccessionNumber());\r
+ commit();\r
+ }\r
+ \r
+ private void createTestData(){\r
+ DnaSample sample = DnaSample.NewInstance();\r
+ Sequence sequence = Sequence.NewInstance("Meine Sequence");\r
+ sample.addSequences(sequence);\r
+ sample.setUuid(uuidSample1);\r
+ \r
+ Locus locus = Locus.NewInstance("Locus", null);\r
+ sequence.setLocus(locus);\r
+ \r
+ GenBankAccession accession = GenBankAccession.NewInstance("123");\r
+ sequence.addGenBankAccession(accession);\r
+ \r
+ occurrenceDao.save(sample);\r
+ commitAndStartNewTransaction(new String[]{"DnaSample", "SpecimenOrObservationBase", "Locus"});\r
+ }\r
+ \r
+ \r
+ }\r
\r
@Test\r
public void testCountNames() {\r
-- System.out.println("count");\r
int count = taxonNameDao.countNames("Atropos", null, null, null, Rank.GENUS());\r
\r
assertEquals("countNames should return 3",3,count);\r
includedProperties.add("specificEpithet");\r
includedProperties.add("infraSpecificEpithet");\r
includedProperties.add("rank");\r
-- System.out.println("countByExample");\r
int count = taxonNameDao.count(zoologicalName,includedProperties);\r
\r
assertEquals("countNames should return 3",3,count);\r
\r
package eu.etaxonomy.cdm.persistence.dao.hibernate.name;\r
\r
--import static junit.framework.Assert.assertNotNull;\r
++import static org.junit.Assert.assertNotNull;\r
import static org.junit.Assert.assertEquals;\r
import static org.junit.Assert.assertTrue;\r
\r
\r
import org.apache.log4j.Logger;\r
import org.junit.Assert;\r
--import org.junit.Ignore;\r
import org.junit.Test;\r
import org.unitils.dbunit.annotation.DataSet;\r
import org.unitils.dbunit.annotation.ExpectedDataSet;\r
}\r
Set<TaxonNameBase> names = specTypeDesig.getTypifiedNames();\r
Assert.assertEquals("There should be exactly 1 typified name for the the specimen type designation", 1, names.size());\r
-- TaxonNameBase singleName = names.iterator().next();\r
++ TaxonNameBase<?,?> singleName = names.iterator().next();\r
Assert.assertEquals("", UUID.fromString("61b1dcae-8aa6-478a-bcd6-080cf0eb6ad7"), singleName.getUuid());\r
}\r
\r
}\r
}\r
\r
-- TaxonNameBase newName = BotanicalName.NewInstance(Rank.SPECIES());\r
++ TaxonNameBase<?,?> newName = BotanicalName.NewInstance(Rank.SPECIES());\r
newName.setUuid(UUID.fromString("c16c3bc5-d3d0-4676-91a1-848ebf011e7c"));\r
newName.setTitleCache("Name used as typified name", true);\r
newName.addTypeDesignation(specTypeDesig, false);\r
SpecimenTypeDesignation desig1 = SpecimenTypeDesignation.NewInstance();\r
desig1.setUuid(UUID.fromString("a1b8af89-b724-469b-b0ce-027c2199aadd"));\r
\r
-- TaxonNameBase name = BotanicalName.NewInstance(Rank.SPECIES());\r
++ TaxonNameBase<?,?> name = BotanicalName.NewInstance(Rank.SPECIES());\r
name.setUuid(UUID.fromString("503d78dc-5d4c-4eb6-b682-0ab90fdee02c"));\r
name.setTitleCache("Name saved via cascade", true);\r
name.addTypeDesignation(desig1, false);\r
\r
typeDesignationDao.saveOrUpdate(desig1);\r
++ commit();\r
}\r
\r
@Test\r
// 2. new TypeDesignation with uuid ceca086e-e8d3-444e-abfb-c47f76835130\r
SpecimenTypeDesignation desig1 = SpecimenTypeDesignation.NewInstance();\r
desig1.setUuid(UUID.fromString("ceca086e-e8d3-444e-abfb-c47f76835130"));\r
--\r
++ \r
++// //REMOVE\r
++// desig1.setOriginalNameString("orig");\r
++// \r
name1.addTypeDesignation(desig1, true);\r
\r
nameDao.saveOrUpdate(name1);\r
--\r
-- commitAndStartNewTransaction(null);\r
--\r
++ commitAndStartNewTransaction(new String[]{"TypeDesignationBase", "TypeDesignationBase_AUD"});\r
++// System.out.println(desig1.getId());\r
++// System.out.println(desig1.getUuid());\r
++ \r
// printDataSet(System.err, new String[]{"TaxonNameBase","TaxonNameBase_AUD",\r
// "HomotypicalGroup","HomotypicalGroup_AUD",\r
// "TypeDesignationBase","TypeDesignationBase_AUD",\r
desig1.setTypeSpecimen(specimen);\r
\r
occurrenceDao.saveOrUpdate(specimen);\r
++ commit();\r
\r
}\r
\r
\r
import static org.junit.Assert.assertEquals;\r
\r
++import java.util.HashSet;\r
import java.util.List;\r
++import java.util.Set;\r
import java.util.UUID;\r
\r
++import org.junit.Assert;\r
import org.junit.Before;\r
import org.junit.Test;\r
import org.unitils.dbunit.annotation.DataSet;\r
List<Reference> proceedings_subordinateReferences = referenceDao.getSubordinateReferences(proceedings);\r
assertEquals("expecting one subordinate reference",2 ,proceedings_subordinateReferences.size());\r
sub_1 = proceedings_subordinateReferences.get(0);\r
-- Reference sub_2 = proceedings_subordinateReferences.get(1);\r
++ Reference<?> sub_2 = proceedings_subordinateReferences.get(1);\r
assertEquals("expecting BookSection as first subordinateReferences", "Proceedings of Testing Vol. 1", sub_1.getTitleCache());\r
assertEquals("expecting BookSection as first subordinateReferences", "Better Testing made easy", sub_2.getTitleCache());\r
assertEquals("first subordinateReferences matches uuid", firstBookUuid, sub_1.getUuid());\r
@Test\r
public void testListCoveredTaxa() {\r
\r
-- \r
-- Reference book = referenceDao.findByUuid(firstBookUuid);\r
++ Reference<?> book = referenceDao.findByUuid(firstBookUuid);\r
List<TaxonBase> coveredTaxa = referenceDao.listCoveredTaxa(book, false, null);\r
assertEquals("expecting one Taxa covered by this book", 1, coveredTaxa.size());\r
assertEquals("covered taxon is 'Lactuca perennis'", "Lactuca perennis", coveredTaxa.get(0).getName().getTitleCache() );\r
\r
coveredTaxa = referenceDao.listCoveredTaxa(book, true, null);\r
-- assertEquals("expecting one Taxa covered by this book", 2, coveredTaxa.size());\r
-- assertEquals("covered taxon is 'Lactuca perennis'", "Lactuca perennis", coveredTaxa.get(0).getName().getTitleCache() );\r
-- assertEquals("2nd covered taxon is 'Lactuca virosa'", "Lactuca virosa", coveredTaxa.get(1).getName().getTitleCache() );\r
++ assertEquals("expecting 2 Taxa covered by this book", 2, coveredTaxa.size());\r
++ Set<String> titles = makeTitleCacheSet(coveredTaxa);\r
++ Assert.assertTrue("covered taxa must contain 'Lactuca perennis'", titles.contains("Lactuca perennis"));\r
++ Assert.assertTrue("covered taxon must contain 'Lactuca virosa'", titles.contains("Lactuca virosa"));\r
++// assertEquals("2nd covered taxon is 'Lactuca virosa'", "Lactuca virosa", coveredTaxa.get(1).getName().getTitleCache() );\r
\r
Reference bookSection = referenceDao.findByUuid(bookSectionUuid);\r
coveredTaxa = referenceDao.listCoveredTaxa(bookSection, false, null);\r
assertEquals("expecting two Taxa covered by this bookSection", 2, coveredTaxa.size());\r
-- assertEquals("1st covered taxon is 'Lactuca perennis'", "Lactuca perennis", coveredTaxa.get(0).getName().getTitleCache() );\r
-- assertEquals("2nd covered taxon is 'Lactuca virosa'", "Lactuca virosa", coveredTaxa.get(1).getName().getTitleCache() );\r
++ titles = makeTitleCacheSet(coveredTaxa);\r
++ Assert.assertTrue("covered taxa must contain 'Lactuca perennis'", titles.contains("Lactuca perennis"));\r
++ Assert.assertTrue("covered taxon must contain 'Lactuca virosa'", titles.contains("Lactuca virosa"));\r
++// assertEquals("1st covered taxon is 'Lactuca perennis'", "Lactuca perennis", coveredTaxa.get(0).getName().getTitleCache() );\r
++// assertEquals("2nd covered taxon is 'Lactuca virosa'", "Lactuca virosa", coveredTaxa.get(1).getName().getTitleCache() );\r
\r
// by nomenclaturalReference\r
Reference nomRef = referenceDao.findByUuid(nomenclaturalReferenceBookUuid);\r
coveredTaxa = referenceDao.listCoveredTaxa(nomRef, false, null);\r
assertEquals("expecting two Taxa covered nomenclaturalReference", 2, coveredTaxa.size());\r
-- assertEquals("covered taxon is 'Lactuca perennis'", "Lactuca perennis", coveredTaxa.get(0).getName().getTitleCache() );\r
-- assertEquals("2nd covered taxon is 'Lactuca virosa'", "Lactuca virosa", coveredTaxa.get(1).getName().getTitleCache() );\r
++ titles = makeTitleCacheSet(coveredTaxa);\r
++ Assert.assertTrue("covered taxa must contain 'Lactuca perennis'", titles.contains("Lactuca perennis"));\r
++ Assert.assertTrue("covered taxon must contain 'Lactuca virosa'", titles.contains("Lactuca virosa"));\r
++// assertEquals("covered taxon is 'Lactuca perennis'", "Lactuca perennis", coveredTaxa.get(0).getName().getTitleCache() );\r
++// assertEquals("2nd covered taxon is 'Lactuca virosa'", "Lactuca virosa", coveredTaxa.get(1).getName().getTitleCache() );\r
\r
}\r
\r
++ private Set<String> makeTitleCacheSet(List<TaxonBase> coveredTaxa) {\r
++ Set<String> titles = new HashSet<String>();\r
++ titles.add(coveredTaxa.get(0).getName().getTitleCache());\r
++ titles.add(coveredTaxa.get(1).getName().getTitleCache());\r
++ return titles;\r
++ }\r
++\r
\r
}\r
\r
package eu.etaxonomy.cdm.persistence.dao.hibernate.taxon;\r
\r
--import static junit.framework.Assert.assertEquals;\r
--import static junit.framework.Assert.assertFalse;\r
--import static junit.framework.Assert.assertNotNull;\r
--import static junit.framework.Assert.assertSame;\r
--import static junit.framework.Assert.assertTrue;\r
--import static org.junit.Assert.assertNull;\r
--import static org.junit.Assert.fail;\r
--\r
--import java.io.FileOutputStream;\r
--import java.util.ArrayList;\r
--import java.util.HashSet;\r
--import java.util.List;\r
--import java.util.Set;\r
++import static org.junit.Assert.assertNotNull;\r
++\r
import java.util.UUID;\r
\r
--import org.hibernate.Hibernate;\r
--import org.hibernate.envers.query.AuditEntity;\r
--import org.hibernate.envers.query.criteria.AuditCriterion;\r
import org.junit.After;\r
import org.junit.Before;\r
--import org.junit.Ignore;\r
--import org.junit.Rule;\r
import org.junit.Test;\r
--import org.junit.rules.MethodRule;\r
import org.unitils.dbunit.annotation.DataSet;\r
--import org.unitils.dbunit.annotation.ExpectedDataSet;\r
import org.unitils.spring.annotation.SpringBeanByType;\r
\r
--//import com.carrotsearch.junitbenchmarks.BenchmarkOptions;\r
--//import com.carrotsearch.junitbenchmarks.BenchmarkRule;\r
--\r
--import eu.etaxonomy.cdm.model.location.NamedArea;\r
--import eu.etaxonomy.cdm.model.name.NonViralName;\r
--import eu.etaxonomy.cdm.model.name.Rank;\r
--import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
--import eu.etaxonomy.cdm.model.reference.Reference;\r
--import eu.etaxonomy.cdm.model.taxon.Synonym;\r
--import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
--import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
--import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
--import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
--import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
--import eu.etaxonomy.cdm.model.taxon.Classification;\r
--import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;\r
import eu.etaxonomy.cdm.model.view.AuditEvent;\r
--import eu.etaxonomy.cdm.model.view.AuditEventRecord;\r
import eu.etaxonomy.cdm.model.view.context.AuditEventContextHolder;\r
--import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;\r
import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;\r
import eu.etaxonomy.cdm.persistence.dao.reference.IReferenceDao;\r
--import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;\r
import eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao;\r
--import eu.etaxonomy.cdm.persistence.fetch.CdmFetch;\r
--import eu.etaxonomy.cdm.persistence.query.GroupByCount;\r
--import eu.etaxonomy.cdm.persistence.query.GroupByDate;\r
--import eu.etaxonomy.cdm.persistence.query.Grouping;\r
--import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
--import eu.etaxonomy.cdm.persistence.query.NativeSqlOrderHint;\r
--import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
--import eu.etaxonomy.cdm.persistence.query.OrderHint.SortOrder;\r
++import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;\r
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
\r
/**\r
\r
\r
\r
--\r
--\r
--\r
--\r
--\r
--\r
--\r
--\r
--\r
--\r
--\r
--\r
--\r
--\r
}\r
\r
package eu.etaxonomy.cdm.persistence.dao.hibernate.taxon;\r
\r
--import static junit.framework.Assert.assertEquals;\r
--import static junit.framework.Assert.assertFalse;\r
--import static junit.framework.Assert.assertNotNull;\r
--import static junit.framework.Assert.assertSame;\r
--import static junit.framework.Assert.assertTrue;\r
++import static org.junit.Assert.assertEquals;\r
++import static org.junit.Assert.assertFalse;\r
++import static org.junit.Assert.assertNotNull;\r
++import static org.junit.Assert.assertSame;\r
++import static org.junit.Assert.assertTrue;\r
import static org.junit.Assert.assertNull;\r
import static org.junit.Assert.fail;\r
\r
import java.util.Set;\r
import java.util.UUID;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Level;\r
import org.hibernate.Hibernate;\r
@Test\r
@DataSet\r
public void testGetTaxaByName() {\r
-- Reference sec = referenceDao.findById(1);\r
++ Reference<?> sec = referenceDao.findById(1);\r
assert sec != null : "sec must exist";\r
\r
List<TaxonBase> results = taxonDao.getTaxaByName("Aus", sec);\r
@Test\r
@DataSet\r
public void testGetTaxaByNameForEditor() {\r
-- Reference sec = referenceDao.findById(1);\r
++ Reference<?> sec = referenceDao.findById(1);\r
assert sec != null : "sec must exist";\r
\r
List<UuidAndTitleCache<TaxonBase>> results = taxonDao.getTaxaByNameForEditor(true, true, "Mand*", null, MatchMode.BEGINNING, null);\r
* Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.taxon.TaxonDaoHibernateImpl#findByNameTitleCache(Class<? extends TaxonBase>clazz, String queryString, Classification classification, MatchMode matchMode, Set<NamedArea> namedAreas, Integer pageNumber, Integer pageSize, List<String> propertyPaths)}\r
* restricting the search by a set of Areas.\r
*/\r
-- @SuppressWarnings("unchecked")\r
@Test\r
@DataSet(loadStrategy=CleanSweepInsertLoadStrategy.class, value="TaxonDaoHibernateImplTest.testGetTaxaByNameAndArea.xml")\r
public void testFindByNameTitleCache() {\r
@Test\r
@DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml")\r
public void testFindDeleted() {\r
-- TaxonBase taxon = taxonDao.findByUuid(acherontia);\r
++ TaxonBase<?> taxon = taxonDao.findByUuid(acherontia);\r
assertNull("findByUuid should return null in this view", taxon);\r
assertFalse("exist should return false in this view",taxonDao.exists(acherontia));\r
}\r
@Test\r
@DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml")\r
public void testGetAuditEvents() {\r
-- TaxonBase taxon = taxonDao.findByUuid(sphingidae);\r
++ TaxonBase<?> taxon = taxonDao.findByUuid(sphingidae);\r
assert taxon != null : "taxon cannot be null";\r
\r
List<String> propertyPaths = new ArrayList<String>();\r
@DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml")\r
public void testGetAuditEventsFromNow() {\r
AuditEventContextHolder.getContext().setAuditEvent(previousAuditEvent);\r
-- TaxonBase taxon = taxonDao.findByUuid(sphingidae);\r
++ TaxonBase<?> taxon = taxonDao.findByUuid(sphingidae);\r
assert taxon != null : "taxon cannot be null";\r
\r
List<AuditEventRecord<TaxonBase>> auditEvents = taxonDao.getAuditEvents(taxon, null,null,AuditEventSort.FORWARDS,null);\r
@Test\r
@DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml")\r
public void testCountAuditEvents() {\r
-- TaxonBase taxon = taxonDao.findByUuid(sphingidae);\r
++ TaxonBase<?> taxon = taxonDao.findByUuid(sphingidae);\r
assert taxon != null : "taxon cannot be null";\r
\r
int numberOfAuditEvents = taxonDao.countAuditEvents(taxon,null);\r
@Test\r
@DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml")\r
public void getPreviousAuditEvent() {\r
-- TaxonBase taxon = taxonDao.findByUuid(sphingidae);\r
++ TaxonBase<?> taxon = taxonDao.findByUuid(sphingidae);\r
assert taxon != null : "taxon cannot be null";\r
\r
AuditEventRecord<TaxonBase> auditEvent = taxonDao.getPreviousAuditEvent(taxon);\r
@DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml")\r
public void getNextAuditEvent() {\r
AuditEventContextHolder.getContext().setAuditEvent(previousAuditEvent);\r
-- TaxonBase taxon = taxonDao.findByUuid(sphingidae);\r
++ TaxonBase<?> taxon = taxonDao.findByUuid(sphingidae);\r
assert taxon != null : "taxon cannot be null";\r
\r
AuditEventRecord<TaxonBase> auditEvent = taxonDao.getNextAuditEvent(taxon);\r
@DataSet("TaxonDaoHibernateImplTest.testFindDeleted.xml")\r
public void getNextAuditEventAtEnd() {\r
AuditEventContextHolder.getContext().setAuditEvent(mostRecentAuditEvent);\r
-- TaxonBase taxon = taxonDao.findByUuid(sphingidae);\r
++ TaxonBase<?> taxon = taxonDao.findByUuid(sphingidae);\r
assert taxon != null : "taxon cannot be null";\r
\r
AuditEventRecord<TaxonBase> auditEvent = taxonDao.getNextAuditEvent(taxon);\r
\r
List<TaxonBase> results = taxonDao.list(null, null, orderHints);\r
System.out.println("native SQL order");\r
-- for(TaxonBase result : results) {\r
++ for(TaxonBase<?> result : results) {\r
System.out.println(result.getTitleCache());\r
}\r
}\r
package eu.etaxonomy.cdm.persistence.dao.hibernate.taxon;
--import static junit.framework.Assert.assertNotNull;
++import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;
import java.util.HashSet;
\r
package eu.etaxonomy.cdm.persistence.dao.hibernate.view;\r
\r
--import static junit.framework.Assert.assertEquals;\r
--import static junit.framework.Assert.assertFalse;\r
--import static junit.framework.Assert.assertNotNull;\r
--import static junit.framework.Assert.assertSame;\r
--import static junit.framework.Assert.assertTrue;\r
--import static org.junit.Assert.assertNull;\r
--import static org.junit.Assert.fail;\r
++import static org.junit.Assert.assertNotNull;\r
\r
--import java.io.FileOutputStream;\r
--import java.util.ArrayList;\r
--import java.util.HashSet;\r
--import java.util.List;\r
--import java.util.Set;\r
--import java.util.UUID;\r
--\r
--import org.hibernate.Hibernate;\r
--import org.hibernate.envers.query.AuditEntity;\r
--import org.hibernate.envers.query.criteria.AuditCriterion;\r
import org.joda.time.DateTime;\r
--import org.junit.After;\r
import org.junit.Before;\r
--import org.junit.Ignore;\r
import org.junit.Test;\r
import org.unitils.dbunit.annotation.DataSet;\r
--import org.unitils.dbunit.annotation.ExpectedDataSet;\r
import org.unitils.spring.annotation.SpringBeanByType;\r
\r
--import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
--import eu.etaxonomy.cdm.model.description.Distribution;\r
--import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
--import eu.etaxonomy.cdm.model.location.NamedArea;\r
--import eu.etaxonomy.cdm.model.name.NonViralName;\r
--import eu.etaxonomy.cdm.model.name.Rank;\r
--import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
--import eu.etaxonomy.cdm.model.reference.Reference;\r
--import eu.etaxonomy.cdm.model.taxon.Synonym;\r
--import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
--import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
--import eu.etaxonomy.cdm.model.taxon.Taxon;\r
--import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
--import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
--import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
--import eu.etaxonomy.cdm.model.taxon.Classification;\r
import eu.etaxonomy.cdm.model.view.AuditEvent;\r
--import eu.etaxonomy.cdm.model.view.AuditEventRecord;\r
--import eu.etaxonomy.cdm.model.view.context.AuditEventContextHolder;\r
--import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;\r
--import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;\r
--import eu.etaxonomy.cdm.persistence.dao.reference.IReferenceDao;\r
--import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;\r
--import eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao;\r
--import eu.etaxonomy.cdm.persistence.fetch.CdmFetch;\r
--import eu.etaxonomy.cdm.persistence.query.GroupByCount;\r
--import eu.etaxonomy.cdm.persistence.query.GroupByDate;\r
--import eu.etaxonomy.cdm.persistence.query.Grouping;\r
--import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
--import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
--import eu.etaxonomy.cdm.persistence.query.OrderHint.SortOrder;\r
import eu.etaxonomy.cdm.persistence.view.IAuditEventDao;\r
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
\r
package eu.etaxonomy.cdm.persistence.hibernate.replace;\r
\r
\r
--import java.io.FileOutputStream;\r
import java.util.UUID;\r
\r
import org.apache.log4j.Logger;\r
\r
import eu.etaxonomy.cdm.model.agent.Institution;\r
import eu.etaxonomy.cdm.model.agent.Person;\r
--import eu.etaxonomy.cdm.model.description.MediaKey;\r
--import eu.etaxonomy.cdm.model.media.Media;\r
import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao;\r
--import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
\r
/**\r
commit();\r
if(logger.isDebugEnabled()){\r
printDataSet(System.out, tableNames);\r
++ //careful, this will overwrite existing files\r
++// writeDbUnitDataSetFile(tableNames);\r
}\r
startNewTransaction();\r
}\r
--- /dev/null
--- /dev/null
++<?xml version="1.0" encoding="UTF-8"?>\r
++<c3p0-config>\r
++ <!-- this is a copy of the same file in\r
++ src/main/resources but with commented \r
++ "automaticTestTable" property.\r
++ This property causes problems in tests as the table\r
++ is not found in the test database. Maybe we can fix \r
++ this one day.\r
++ see also http://dev.e-taxonomy.eu/trac/ticket/3344\r
++ -->\r
++ \r
++ <!--\r
++ for a reference please refer to\r
++ http://www.mchange.com/projects/c3p0/index.htm\r
++ -->\r
++ <default-config>\r
++ <!--\r
++ idleConnectionTestPeriod: if this is a number greater than 0, c3p0\r
++ will test all idle, pooled but unchecked-out connections, every this\r
++ number of seconds\r
++ -->\r
++ <property name="idleConnectionTestPeriod">60</property>\r
++ <!--\r
++ automaticTestTable: \r
++ If provided, c3p0 will create an\r
++ empty table of the specified name, and use queries against that table\r
++ to test the Connection. If automaticTestTable is provided, c3p0 will\r
++ generate its own test query, therefore any preferredTestQuery set\r
++ will be ignored. You should not work with the named table after c3p0\r
++ creates it; it should be strictly for c3p0's use in testing your\r
++ Connection.\r
++ -->\r
++ \r
++ \r
++<!-- <property name="automaticTestTable">_c3p0ConnectionTest</property> -->\r
++ \r
++ </default-config>\r
++</c3p0-config>
;
CREATE USER IF NOT EXISTS EDIT PASSWORD '' ADMIN;
CREATE SEQUENCE PUBLIC.SYSTEM_SEQUENCE_10A55F0A_EE57_42DB_8046_6240A60AD0EC START WITH 4 BELONGS_TO_TABLE;
++
++
CREATE CACHED TABLE PUBLIC.ADDRESS(
ID INTEGER NOT NULL,
CREATED TIMESTAMP,
\r
#hibernate.connection.password=\r
#hibernate.hbm2ddl.auto=create-drop\r
--#hibernate.cache.provider_class=net.sf.ehcache.hibernate.SingletonEhCacheProvider\r
--#hibernate.cache.provider_class=org.hibernate.cache.NoCacheProvider\r
--#hibernate.search.default.directory_provider=org.hibernate.search.store.FSDirectoryProvider\r
++#hibernate.cache.region.factory_class=net.sf.ehcache.hibernate.SingletonEhCacheProvider\r
++#hibernate.cache.region.factory_class=org.hibernate.cache.internal.NoCachingRegionFactory\r
++#hibernate.search.default.directory_provider=org.hibernate.search.store.impl.FSDirectoryProvider\r
#hibernate.search.default.indexBase=./target/test-classes\r
-->\r
<property name="properties">\r
<props>\r
-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>\r
++ <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</prop>\r
<prop key="hibernate.show_sql">false</prop>\r
<prop key="hibernate.format_sql">false</prop>\r
-- <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</prop>\r
++ <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.impl.FSDirectoryProvider</prop>\r
<prop key="hibernate.search.default.indexBase">./target/index</prop>\r
++ \r
++ <!-- temp for h4 migration testing\r
++ <prop key="hibernate.connection.driver_class">org.h2.Driver</prop>\r
++ <prop key="hibernate.connection.url">jdbc:h2:mem:cdm</prop>\r
++ <prop key="hibernate.connection.username">sa</prop>\r
++ <prop key="hibernate.connection.password"></prop>\r
++ <prop key="hibernate.search.lucene_version">LUCENE_36</prop>\r
++ end temp for h4 migration testing\r
++ --> \r
</props>\r
</property>\r
</bean>\r
</property>\r
</bean>\r
\r
++<!-- \r
++ We do not use spelling suggestions anymore. This one relates to springmodules which is\r
++ somewhat outdated. Once we work again with spelling suggestions we better use a modern\r
++ approache, e.g. annotation based.\r
<bean id="taxonSpellingDirectory" class="org.springmodules.lucene.index.support.FSDirectoryFactoryBean">\r
<property name="location" value="file:./target/index/eu.etaxonomy.cdm.model.taxon.TaxonBase_spelling"/>\r
<property name="create" value="true"/>\r
-- </bean>\r
++ </bean> -->\r
\r
</beans>\r
<property name="properties">\r
<props>\r
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLCorrectedDialect</prop>\r
-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>\r
++ <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</prop>\r
<prop key="hibernate.show_sql">false</prop>\r
<prop key="hibernate.format_sql">false</prop>\r
-- <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</prop>\r
++ <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.impl.FSDirectoryProvider</prop>\r
<prop key="hibernate.search.default.indexBase">./target/test-classes</prop>\r
</props>\r
</property>\r
<?xml version='1.0' encoding='UTF-8'?>\r
<dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">\r
-- <AGENTBASE DTYPE="Person" CREATED="2008-12-10 09:56:07.0" UUID="e4ec436a-3e8c-4166-a834-3bb84c2b5ad6" PROTECTEDTITLECACHE="true" TITLECACHE="H.C.J. Godfray"/>\r
-- <AGENTBASE DTYPE="Person" CREATED="2008-12-10 09:56:07.0" UUID="ed6ac546-8c6c-48c4-9b91-40b1157c05c6" PROTECTEDTITLECACHE="true" TITLECACHE="B.R. Clark" NOMENCLATURALTITLE="B.R. Clark" FIRSTNAME="Benjamin" LASTNAME="Clark"/>\r
-- <AGENTBASE DTYPE="Person" CREATED="2008-12-10 09:56:07.0" UUID="746e872b-3f61-442c-b093-6b4d15c87694" PROTECTEDTITLECACHE="true" TITLECACHE="I.J. Kitching"/>\r
-- <AGENTBASE DTYPE="Person" CREATED="2008-12-10 09:56:07.0" UUID="c62cd389-d787-47f4-99c3-b80eb12a1ef2" PROTECTEDTITLECACHE="true" TITLECACHE="S.J. Mayo"/>\r
-- <AGENTBASE DTYPE="Person" CREATED="2008-12-10 09:56:07.0" UUID="dbaa601e-806b-40aa-a3cd-c2e179ddbd9a" PROTECTEDTITLECACHE="true" TITLECACHE="M.J. Scoble"/>\r
-- <AGENTBASE DTYPE="Team" CREATED="2008-12-10 09:56:07.0" UUID="924fa059-1b83-45f8-bc3a-e754d2757364" PROTECTEDTITLECACHE="true" TITLECACHE="Godfray, et. al." PROTECTEDNOMENCLATURALTITLECACHE="true"/>\r
-- <AGENTBASE DTYPE="Institution" CREATED="2008-12-10 09:56:07.0" UUID="18679846-7343-4e5f-b14e-5eb56b967989" PROTECTEDTITLECACHE="true" TITLECACHE="University College London"/>\r
-- <AGENTBASE DTYPE="Institution" CREATED="2008-12-10 09:56:07.0" UUID="28f6aaa5-e03e-4831-9ce2-71eaf56cdebe" PROTECTEDTITLECACHE="true" TITLECACHE="Imperial College London"/>\r
-- <AGENTBASE DTYPE="Institution" CREATED="2008-12-10 09:56:07.0" UUID="2c06962e-84f8-4895-91b7-1ae6269e97d8" PROTECTEDTITLECACHE="true" TITLECACHE="University of Oxford"/>\r
-- <AGENTBASE_AUD DTYPE="Person" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="e4ec436a-3e8c-4166-a834-3bb84c2b5ad6" PROTECTEDTITLECACHE="true" TITLECACHE="H.C.J. Godfray"/>\r
-- <AGENTBASE_AUD DTYPE="Person" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="ed6ac546-8c6c-48c4-9b91-40b1157c05c6" PROTECTEDTITLECACHE="true" TITLECACHE="B.R. Clark" FIRSTNAME="Ben" LASTNAME="Clark"/>\r
-- <AGENTBASE_AUD DTYPE="Person" REVTYPE="1" CREATED="2008-12-10 09:56:07.0" UUID="ed6ac546-8c6c-48c4-9b91-40b1157c05c6" PROTECTEDTITLECACHE="true" TITLECACHE="B.R. Clark"/>\r
-- <AGENTBASE_AUD DTYPE="Person" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="746e872b-3f61-442c-b093-6b4d15c87694" PROTECTEDTITLECACHE="true" TITLECACHE="I.J. Kitching"/>\r
-- <AGENTBASE_AUD DTYPE="Person" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c62cd389-d787-47f4-99c3-b80eb12a1ef2" PROTECTEDTITLECACHE="true" TITLECACHE="S.J. Mayo"/>\r
-- <AGENTBASE_AUD DTYPE="Person" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="dbaa601e-806b-40aa-a3cd-c2e179ddbd9a" PROTECTEDTITLECACHE="true" TITLECACHE="M.J. Scoble"/>\r
-- <AGENTBASE_AUD DTYPE="Team" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="924fa059-1b83-45f8-bc3a-e754d2757364" PROTECTEDTITLECACHE="true" TITLECACHE="Godfray, et. al." PROTECTEDNOMENCLATURALTITLECACHE="true"/>\r
-- <AGENTBASE_AUD DTYPE="Institution" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="18679846-7343-4e5f-b14e-5eb56b967989" PROTECTEDTITLECACHE="true" TITLECACHE="University College London"/>\r
-- <AGENTBASE_AUD DTYPE="Institution" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="28f6aaa5-e03e-4831-9ce2-71eaf56cdebe" PROTECTEDTITLECACHE="true" TITLECACHE="Imperial College London"/>\r
-- <AGENTBASE_AUD DTYPE="Institution" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="2c06962e-84f8-4895-91b7-1ae6269e97d8" PROTECTEDTITLECACHE="true" TITLECACHE="University of Oxford"/>\r
++ <AGENTBASE DTYPE="Person" CREATED="2008-12-10 09:56:07.0" UUID="e4ec436a-3e8c-4166-a834-3bb84c2b5ad6" PROTECTEDTITLECACHE="true" TITLECACHE="H.C.J. Godfray" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE DTYPE="Person" CREATED="2008-12-10 09:56:07.0" UUID="ed6ac546-8c6c-48c4-9b91-40b1157c05c6" PROTECTEDTITLECACHE="true" TITLECACHE="B.R. Clark" NOMENCLATURALTITLE="B.R. Clark" FIRSTNAME="Benjamin" LASTNAME="Clark" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE DTYPE="Person" CREATED="2008-12-10 09:56:07.0" UUID="746e872b-3f61-442c-b093-6b4d15c87694" PROTECTEDTITLECACHE="true" TITLECACHE="I.J. Kitching" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE DTYPE="Person" CREATED="2008-12-10 09:56:07.0" UUID="c62cd389-d787-47f4-99c3-b80eb12a1ef2" PROTECTEDTITLECACHE="true" TITLECACHE="S.J. Mayo" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE DTYPE="Person" CREATED="2008-12-10 09:56:07.0" UUID="dbaa601e-806b-40aa-a3cd-c2e179ddbd9a" PROTECTEDTITLECACHE="true" TITLECACHE="M.J. Scoble" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE DTYPE="Team" CREATED="2008-12-10 09:56:07.0" UUID="924fa059-1b83-45f8-bc3a-e754d2757364" PROTECTEDTITLECACHE="true" TITLECACHE="Godfray, et. al." PROTECTEDNOMENCLATURALTITLECACHE="true" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
++ <AGENTBASE DTYPE="Institution" CREATED="2008-12-10 09:56:07.0" UUID="18679846-7343-4e5f-b14e-5eb56b967989" PROTECTEDTITLECACHE="true" TITLECACHE="University College London" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
++ <AGENTBASE DTYPE="Institution" CREATED="2008-12-10 09:56:07.0" UUID="28f6aaa5-e03e-4831-9ce2-71eaf56cdebe" PROTECTEDTITLECACHE="true" TITLECACHE="Imperial College London" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
++ <AGENTBASE DTYPE="Institution" CREATED="2008-12-10 09:56:07.0" UUID="2c06962e-84f8-4895-91b7-1ae6269e97d8" PROTECTEDTITLECACHE="true" TITLECACHE="University of Oxford" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
++ \r
++ <AGENTBASE_AUD DTYPE="Person" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="e4ec436a-3e8c-4166-a834-3bb84c2b5ad6" PROTECTEDTITLECACHE="true" TITLECACHE="H.C.J. Godfray" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE_AUD DTYPE="Person" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="ed6ac546-8c6c-48c4-9b91-40b1157c05c6" PROTECTEDTITLECACHE="true" TITLECACHE="B.R. Clark" FIRSTNAME="Ben" LASTNAME="Clark" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE_AUD DTYPE="Person" REVTYPE="1" CREATED="2008-12-10 09:56:07.0" UUID="ed6ac546-8c6c-48c4-9b91-40b1157c05c6" PROTECTEDTITLECACHE="true" TITLECACHE="B.R. Clark" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE_AUD DTYPE="Person" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="746e872b-3f61-442c-b093-6b4d15c87694" PROTECTEDTITLECACHE="true" TITLECACHE="I.J. Kitching" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE_AUD DTYPE="Person" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c62cd389-d787-47f4-99c3-b80eb12a1ef2" PROTECTEDTITLECACHE="true" TITLECACHE="S.J. Mayo" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE_AUD DTYPE="Person" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="dbaa601e-806b-40aa-a3cd-c2e179ddbd9a" PROTECTEDTITLECACHE="true" TITLECACHE="M.J. Scoble" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE_AUD DTYPE="Team" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="924fa059-1b83-45f8-bc3a-e754d2757364" PROTECTEDTITLECACHE="true" TITLECACHE="Godfray, et. al." PROTECTEDNOMENCLATURALTITLECACHE="true" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
++ <AGENTBASE_AUD DTYPE="Institution" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="18679846-7343-4e5f-b14e-5eb56b967989" PROTECTEDTITLECACHE="true" TITLECACHE="University College London" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
++ <AGENTBASE_AUD DTYPE="Institution" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="28f6aaa5-e03e-4831-9ce2-71eaf56cdebe" PROTECTEDTITLECACHE="true" TITLECACHE="Imperial College London" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
++ <AGENTBASE_AUD DTYPE="Institution" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="2c06962e-84f8-4895-91b7-1ae6269e97d8" PROTECTEDTITLECACHE="true" TITLECACHE="University of Oxford" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
<AGENTBASE_AGENTBASE AGENTBASE_ID="6" TEAMMEMBERS_ID="3" SORTINDEX="0"/>\r
<AGENTBASE_AGENTBASE AGENTBASE_ID="6" TEAMMEMBERS_ID="5" SORTINDEX="1"/>\r
<AGENTBASE_AGENTBASE AGENTBASE_ID="6" TEAMMEMBERS_ID="1" SORTINDEX="2"/>\r
<?xml version='1.0' encoding='UTF-8'?>\r
<dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../dataset.xsd">\r
-- <AGENTBASE DTYPE="Person" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="e4ec436a-3e8c-4166-a834-3bb84c2b5ad6" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="H.C.J. Godfray" PROTECTEDNOMENCLATURALTITLECACHE="true"/>\r
-- <AGENTBASE DTYPE="Person" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ed6ac546-8c6c-48c4-9b91-40b1157c05c6" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="B.R. Clark" PROTECTEDNOMENCLATURALTITLECACHE="true" FIRSTNAME="Ben" LASTNAME="Clark"/>\r
-- <AGENTBASE DTYPE="Person" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="746e872b-3f61-442c-b093-6b4d15c87694" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="I.J. Kitching" PROTECTEDNOMENCLATURALTITLECACHE="true"/>\r
-- <AGENTBASE DTYPE="Person" ID="4" CREATED="2008-12-10 09:56:07.0" UUID="c62cd389-d787-47f4-99c3-b80eb12a1ef2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="S.J. Mayo" PROTECTEDNOMENCLATURALTITLECACHE="true"/>\r
-- <AGENTBASE DTYPE="Person" ID="5" CREATED="2008-12-10 09:56:07.0" UUID="dbaa601e-806b-40aa-a3cd-c2e179ddbd9a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="M.J. Scoble" PROTECTEDNOMENCLATURALTITLECACHE="true"/>\r
-- <AGENTBASE DTYPE="Team" ID="6" CREATED="2008-12-10 09:56:07.0" UUID="924fa059-1b83-45f8-bc3a-e754d2757364" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Godfray, et. al." PROTECTEDNOMENCLATURALTITLECACHE="true"/>\r
-- <AGENTBASE DTYPE="Institution" ID="7" CREATED="2008-12-10 09:56:07.0" UUID="18679846-7343-4e5f-b14e-5eb56b967989" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="University College London" PROTECTEDNOMENCLATURALTITLECACHE="true"/>\r
-- <AGENTBASE DTYPE="Institution" ID="8" CREATED="2008-12-10 09:56:07.0" UUID="28f6aaa5-e03e-4831-9ce2-71eaf56cdebe" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Imperial College London" PROTECTEDNOMENCLATURALTITLECACHE="true"/>\r
-- <AGENTBASE DTYPE="Institution" ID="9" CREATED="2008-12-10 09:56:07.0" UUID="2c06962e-84f8-4895-91b7-1ae6269e97d8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="University of Oxford" PROTECTEDNOMENCLATURALTITLECACHE="true"/>\r
++ <AGENTBASE DTYPE="Person" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="e4ec436a-3e8c-4166-a834-3bb84c2b5ad6" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="H.C.J. Godfray" PROTECTEDNOMENCLATURALTITLECACHE="true" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE DTYPE="Person" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ed6ac546-8c6c-48c4-9b91-40b1157c05c6" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="B.R. Clark" PROTECTEDNOMENCLATURALTITLECACHE="true" FIRSTNAME="Ben" LASTNAME="Clark" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE DTYPE="Person" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="746e872b-3f61-442c-b093-6b4d15c87694" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="I.J. Kitching" PROTECTEDNOMENCLATURALTITLECACHE="true" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE DTYPE="Person" ID="4" CREATED="2008-12-10 09:56:07.0" UUID="c62cd389-d787-47f4-99c3-b80eb12a1ef2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="S.J. Mayo" PROTECTEDNOMENCLATURALTITLECACHE="true" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE DTYPE="Person" ID="5" CREATED="2008-12-10 09:56:07.0" UUID="dbaa601e-806b-40aa-a3cd-c2e179ddbd9a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="M.J. Scoble" PROTECTEDNOMENCLATURALTITLECACHE="true" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE DTYPE="Team" ID="6" CREATED="2008-12-10 09:56:07.0" UUID="924fa059-1b83-45f8-bc3a-e754d2757364" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Godfray, et. al." PROTECTEDNOMENCLATURALTITLECACHE="true" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
++ <AGENTBASE DTYPE="Institution" ID="7" CREATED="2008-12-10 09:56:07.0" UUID="18679846-7343-4e5f-b14e-5eb56b967989" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="University College London" PROTECTEDNOMENCLATURALTITLECACHE="true" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
++ <AGENTBASE DTYPE="Institution" ID="8" CREATED="2008-12-10 09:56:07.0" UUID="28f6aaa5-e03e-4831-9ce2-71eaf56cdebe" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Imperial College London" PROTECTEDNOMENCLATURALTITLECACHE="true" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
++ <AGENTBASE DTYPE="Institution" ID="9" CREATED="2008-12-10 09:56:07.0" UUID="2c06962e-84f8-4895-91b7-1ae6269e97d8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="University of Oxford" PROTECTEDNOMENCLATURALTITLECACHE="true" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
\r
-- <AGENTBASE_AUD DTYPE="Person" ID="1" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="e4ec436a-3e8c-4166-a834-3bb84c2b5ad6" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="H.C.J. Godfray"/>\r
-- <AGENTBASE_AUD DTYPE="Person" ID="2" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="ed6ac546-8c6c-48c4-9b91-40b1157c05c6" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="B.R. Clark" FIRSTNAME="Ben" LASTNAME="Clark"/>\r
-- <AGENTBASE_AUD DTYPE="Person" ID="3" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="746e872b-3f61-442c-b093-6b4d15c87694" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="I.J. Kitching"/>\r
-- <AGENTBASE_AUD DTYPE="Person" ID="4" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c62cd389-d787-47f4-99c3-b80eb12a1ef2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="S.J. Mayo"/>\r
-- <AGENTBASE_AUD DTYPE="Person" ID="5" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="dbaa601e-806b-40aa-a3cd-c2e179ddbd9a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="M.J. Scoble"/>\r
-- <AGENTBASE_AUD DTYPE="Team" ID="6" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="924fa059-1b83-45f8-bc3a-e754d2757364" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Godfray, et. al." PROTECTEDNOMENCLATURALTITLECACHE="true"/>\r
-- <AGENTBASE_AUD DTYPE="Institution" ID="7" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="18679846-7343-4e5f-b14e-5eb56b967989" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="University College London"/>\r
-- <AGENTBASE_AUD DTYPE="Institution" ID="8" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="28f6aaa5-e03e-4831-9ce2-71eaf56cdebe" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Imperial College London"/>\r
-- <AGENTBASE_AUD DTYPE="Institution" ID="9" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="2c06962e-84f8-4895-91b7-1ae6269e97d8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="University of Oxford"/>\r
++ <AGENTBASE_AUD DTYPE="Person" ID="1" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="e4ec436a-3e8c-4166-a834-3bb84c2b5ad6" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="H.C.J. Godfray" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE_AUD DTYPE="Person" ID="2" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="ed6ac546-8c6c-48c4-9b91-40b1157c05c6" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="B.R. Clark" FIRSTNAME="Ben" LASTNAME="Clark" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE_AUD DTYPE="Person" ID="3" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="746e872b-3f61-442c-b093-6b4d15c87694" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="I.J. Kitching" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE_AUD DTYPE="Person" ID="4" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c62cd389-d787-47f4-99c3-b80eb12a1ef2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="S.J. Mayo" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE_AUD DTYPE="Person" ID="5" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="dbaa601e-806b-40aa-a3cd-c2e179ddbd9a" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="M.J. Scoble" LIFESPAN_END="00000000" LIFESPAN_START="00000000"/>\r
++ <AGENTBASE_AUD DTYPE="Team" ID="6" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="924fa059-1b83-45f8-bc3a-e754d2757364" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Godfray, et. al." PROTECTEDNOMENCLATURALTITLECACHE="true" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
++ <AGENTBASE_AUD DTYPE="Institution" ID="7" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="18679846-7343-4e5f-b14e-5eb56b967989" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="University College London" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
++ <AGENTBASE_AUD DTYPE="Institution" ID="8" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="28f6aaa5-e03e-4831-9ce2-71eaf56cdebe" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="Imperial College London" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
++ <AGENTBASE_AUD DTYPE="Institution" ID="9" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="2c06962e-84f8-4895-91b7-1ae6269e97d8" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="University of Oxford" LIFESPAN_END="[null]" LIFESPAN_START="[null]"/>\r
<AGENTBASE_AGENTBASE AGENTBASE_ID="6" TEAMMEMBERS_ID="3" SORTINDEX="0"/>\r
<AGENTBASE_AGENTBASE AGENTBASE_ID="6" TEAMMEMBERS_ID="5" SORTINDEX="1"/>\r
<AGENTBASE_AGENTBASE AGENTBASE_ID="6" TEAMMEMBERS_ID="1" SORTINDEX="2"/>\r
\r
<TAXONNAMEBASE UUID="8564287e-9654-4b8b-a38c-0ccdd9e885db" TITLECACHE="Name1"/>\r
<TYPEDESIGNATIONBASE DTYPE="SpecimenTypeDesignation" UUID="ceca086e-e8d3-444e-abfb-c47f76835130"/>\r
-- <TYPEDESIGNATIONBASE_AUD REVTYPE="0" DTYPE="SpecimenTypeDesignation" UUID="ceca086e-e8d3-444e-abfb-c47f76835130"/>\r
++ <TYPEDESIGNATIONBASE_AUD REVTYPE="0" DTYPE="SpecimenTypeDesignation" UUID="ceca086e-e8d3-444e-abfb-c47f76835130"/>\r
++<!-- for testing <TYPEDESIGNATIONBASE_AUD REVTYPE="0" DTYPE="SpecimenTypeDesignation" UUID="[null]" ORIGINALNAMESTRING="orig" NOTDESIGNATED="false"/> -->\r
\r
</dataset>
<HOMOTYPICALGROUP_AUD ID="2002" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c69b1c20-d321-4550-a755-bfcd2db9c9c5" /> \r
<REFERENCE ID="2001" CREATED="2008-12-10 09:56:07.0" UUID="c243ec4c-6cb7-4e81-a251-a478ef58c945" TITLECACHE="Lorem ipsum" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>\r
<REFERENCE_AUD REV="1000" REVTYPE="0" DTYPE="Book" ID="2001" CREATED="2008-12-10 09:56:07.0" UUID="c243ec4c-6cb7-4e81-a251-a478ef58c945" TITLECACHE="Lorem ipsum" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="2001" CREATED="2008-12-10 09:56:07.0" UUID="44415fc0-1703-11df-8a39-0800200c9a66" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2001" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="2002" CREATED="2008-12-10 09:56:07.0" UUID="523498fc-5fa8-4ac6-9347-303770ac46a1" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2002" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
-- <TAXONNAMEBASE_AUD DTYPE="BotanicalName" REV="1000" REVTYPE="0" ID="2001" CREATED="2008-12-10 09:56:07.0" UUID="44415fc0-1703-11df-8a39-0800200c9a66" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2001" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
-- <TAXONNAMEBASE_AUD DTYPE="BotanicalName" REV="1000" REVTYPE="0" ID="2002" CREATED="2008-12-10 09:56:07.0" UUID="523498fc-5fa8-4ac6-9347-303770ac46a1" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2002" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="2001" CREATED="2008-12-10 09:56:07.0" UUID="44415fc0-1703-11df-8a39-0800200c9a66" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2001" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="2002" CREATED="2008-12-10 09:56:07.0" UUID="523498fc-5fa8-4ac6-9347-303770ac46a1" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2002" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
++ <TAXONNAMEBASE_AUD DTYPE="BotanicalName" REV="1000" REVTYPE="0" ID="2001" CREATED="2008-12-10 09:56:07.0" UUID="44415fc0-1703-11df-8a39-0800200c9a66" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2001" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
++ <TAXONNAMEBASE_AUD DTYPE="BotanicalName" REV="1000" REVTYPE="0" ID="2002" CREATED="2008-12-10 09:56:07.0" UUID="523498fc-5fa8-4ac6-9347-303770ac46a1" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2002" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
</dataset>
<HOMOTYPICALGROUP_AUD ID="2002" REV="1000" REVTYPE="0" CREATED="2008-12-10 09:56:07.0" UUID="c69b1c20-d321-4550-a755-bfcd2db9c9c5" UPDATED="2008-12-10 09:56:07.253"/> \r
<REFERENCE ID="2001" CREATED="2008-12-10 09:56:07.0" UUID="c243ec4c-6cb7-4e81-a251-a478ef58c945" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lorem ipsum" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>\r
<REFERENCE_AUD REV="1000" REVTYPE="0" DTYPE="Book" ID="2001" CREATED="2008-12-10 09:56:07.0" UUID="c243ec4c-6cb7-4e81-a251-a478ef58c945" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Lorem ipsum" PROTECTEDTITLECACHE="true" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="2001" CREATED="2008-12-10 09:56:07.0" UUID="44415fc0-1703-11df-8a39-0800200c9a66" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2001" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="2002" CREATED="2008-12-10 09:56:07.0" UUID="523498fc-5fa8-4ac6-9347-303770ac46a1" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2002" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
-- <TAXONNAMEBASE_AUD DTYPE="BotanicalName" REV="1000" REVTYPE="0" ID="2001" CREATED="2008-12-10 09:56:07.0" UUID="44415fc0-1703-11df-8a39-0800200c9a66" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2001" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
-- <TAXONNAMEBASE_AUD DTYPE="BotanicalName" REV="1000" REVTYPE="0" ID="2002" CREATED="2008-12-10 09:56:07.0" UUID="523498fc-5fa8-4ac6-9347-303770ac46a1" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2002" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="2001" CREATED="2008-12-10 09:56:07.0" UUID="44415fc0-1703-11df-8a39-0800200c9a66" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2001" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="2002" CREATED="2008-12-10 09:56:07.0" UUID="523498fc-5fa8-4ac6-9347-303770ac46a1" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2002" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
++ <TAXONNAMEBASE_AUD DTYPE="BotanicalName" REV="1000" REVTYPE="0" ID="2001" CREATED="2008-12-10 09:56:07.0" UUID="44415fc0-1703-11df-8a39-0800200c9a66" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2001" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
++ <TAXONNAMEBASE_AUD DTYPE="BotanicalName" REV="1000" REVTYPE="0" ID="2002" CREATED="2008-12-10 09:56:07.0" UUID="523498fc-5fa8-4ac6-9347-303770ac46a1" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2002" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus" NOMENCLATURALREFERENCE_ID="2001"/>\r
<NAMERELATIONSHIP ID="2001" CREATED="2008-12-10 09:56:07.0" UUID="43165a02-db6b-4d92-9b48-2fd8df12ee1e" RELATEDFROM_ID="2001" RELATEDTO_ID="2002" DOUBTFUL="false" TYPE_ID="868"/>\r
<NAMERELATIONSHIP_AUD ID="2001" REV="1000" REVTYPE="0" CREATED="2009-09-17 18:20:37.0" UUID="43165a02-db6b-4d92-9b48-2fd8df12ee1e" DOUBTFUL="false" RELATEDFROM_ID="2001" RELATEDTO_ID="2002" TYPE_ID="862"/>\r
<HYBRIDRELATIONSHIP ID="2001" CREATED="2008-12-10 09:56:07.0" UUID="fe8ca4b0-af10-4e0c-bf19-e6b80fd84e2a" RELATEDFROM_ID="2001" RELATEDTO_ID="2002" DOUBTFUL="false" TYPE_ID="857"/>\r
<REFERENCE ID="1" UUID="596b1325-be50-4b0a-9aa2-3ecd610215f2" PROTECTEDTITLECACHE="true" TITLECACHE="Lorem ipsum" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" /> <!--AUTHORTEAM_ID="1"-->
<REFERENCE ID="2" CREATED="2008-12-10 09:56:07.0" UUID="ad4322b7-4b05-48af-be70-f113e46c545e" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="cate-sphingidae.org" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" AUTHORTEAM_ID="3"/>
<REFERENCE ID="3" CREATED="2008-12-10 09:56:07.0" UUID="3eea6f96-0682-4025-8cdd-aaaf7c915ae2" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE="cate-araceae.org" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1"/>
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" PROTECTEDTITLECACHE="true" TITLECACHE="" FULLTITLECACHE="" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Aus" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="1" NOMENCLATURALREFERENCE_ID="1" RANK_ID="774" BASIONYMAUTHORTEAM_ID="1" COMBINATIONAUTHORTEAM_ID="1"/>
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="05a438d6-065f-49ef-84db-c7dc2c259975" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" " FULLTITLECACHE=" " PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Aus" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="aus" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="2" NOMENCLATURALREFERENCE_ID="1" RANK_ID="765" BASIONYMAUTHORTEAM_ID="1" COMBINATIONAUTHORTEAM_ID="[null]"/>
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" PROTECTEDTITLECACHE="true" TITLECACHE="" FULLTITLECACHE="" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" BINOMHYBRID="false" GENUSORUNINOMIAL="Aus" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="1" NOMENCLATURALREFERENCE_ID="1" RANK_ID="774" BASIONYMAUTHORTEAM_ID="1" COMBINATIONAUTHORTEAM_ID="1"/>
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="05a438d6-065f-49ef-84db-c7dc2c259975" UPDATED="2008-12-10 09:56:07.253" PROTECTEDTITLECACHE="true" TITLECACHE=" " FULLTITLECACHE=" " PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" BINOMHYBRID="false" GENUSORUNINOMIAL="Aus" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="aus" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="2" NOMENCLATURALREFERENCE_ID="1" RANK_ID="765" BASIONYMAUTHORTEAM_ID="1" COMBINATIONAUTHORTEAM_ID="[null]"/>
<TAXONNAMEBASE DTYPE="ZoologicalName" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="9640a158-2bdb-4cbc-bff6-8f77e781f86b" UPDATED="2008-12-10 09:56:07.238" PROTECTEDTITLECACHE="true" TITLECACHE="Sphingidae Linnaeus, 1758" FULLTITLECACHE="" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Linnaeus, 1758" BINOMHYBRID="false" GENUSORUNINOMIAL="Sphingidae" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Sphingidae" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="3" NOMENCLATURALREFERENCE_ID="1" RANK_ID="782" BASIONYMAUTHORTEAM_ID="[null]" COMBINATIONAUTHORTEAM_ID="[null]"/>
<TAXONNAMEBASE DTYPE="ZoologicalName" ID="4" CREATED="2008-12-10 09:56:07.0" UUID="446d8d76-e206-49e1-b6da-d06ce1f296e1" UPDATED="2008-12-10 09:56:07.238" PROTECTEDTITLECACHE="true" TITLECACHE="Lathoe Fabricius, 1807" FULLTITLECACHE="" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Fabricius, 1807" BINOMHYBRID="false" GENUSORUNINOMIAL="Laothoe" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Laothoe" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="4" NOMENCLATURALREFERENCE_ID="1" RANK_ID="774" BASIONYMAUTHORTEAM_ID="[null]" COMBINATIONAUTHORTEAM_ID="[null]"/>
<TAXONNAMEBASE DTYPE="ZoologicalName" ID="5" CREATED="2008-12-10 09:56:07.0" UUID="3d0b9061-fc9d-4de5-9dc1-341e10eb139e" UPDATED="2008-12-10 09:56:07.238" PROTECTEDTITLECACHE="true" TITLECACHE="Smerinthus Latreille, 1802" FULLTITLECACHE="" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Latreille, 1802" BINOMHYBRID="false" GENUSORUNINOMIAL="Smerinthus" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="Smerinthus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="5" NOMENCLATURALREFERENCE_ID="1" RANK_ID="774" BASIONYMAUTHORTEAM_ID="[null]" COMBINATIONAUTHORTEAM_ID="[null]"/>
<TAXONBASE DTYPE="Taxon" ID="1" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="258e28a3-c4e5-4b87-823e-2963c7831ce3" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Acherontia lachesis (Fabricius, 1798) sec Lorem ipsum" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="36"/>\r
<TAXONBASE DTYPE="Taxon" ID="2" SEC_ID="1" CREATED="2008-12-10 09:56:07.0" UUID="e110d2c6-fa07-4459-bb7c-269fa0d8f052" UPDATED="2008-12-10 09:56:07.253" TITLECACHE="Cryptocoryne griffithii Schott sec Lorem ipsum" PROTECTEDTITLECACHE="true" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" DOUBTFUL="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="39"/>\r
\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="1" BASIONYMAUTHORTEAM_ID="2" COMBINATIONAUTHORTEAM_ID="1"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="05a438d6-065f-49ef-84db-c7dc2c259975" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus" NOMENCLATURALREFERENCE_ID="1" BASIONYMAUTHORTEAM_ID="1" COMBINATIONAUTHORTEAM_ID="[null]"/>
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2008-12-10 09:56:07.0" UUID="a49a3963-c4ea-4047-8588-2f8f15352730" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" NAMECACHE="Aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="774" GENUSORUNINOMIAL="Aus" NOMENCLATURALREFERENCE_ID="1" BASIONYMAUTHORTEAM_ID="2" COMBINATIONAUTHORTEAM_ID="1"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" CREATED="2008-12-10 09:56:07.0" UUID="05a438d6-065f-49ef-84db-c7dc2c259975" UPDATED="2008-12-10 09:56:07.253" TITLECACHE=" " PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE=" " PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" NAMECACHE="Aus aus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="765" GENUSORUNINOMIAL="Aus" SPECIFICEPITHET="aus" NOMENCLATURALREFERENCE_ID="1" BASIONYMAUTHORTEAM_ID="1" COMBINATIONAUTHORTEAM_ID="[null]"/>
<TAXONNAMEBASE DTYPE="ZoologicalName" ID="3" CREATED="2008-12-10 09:56:07.0" UUID="9640a158-2bdb-4cbc-bff6-8f77e781f86b" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="Sphingidae Linnaeus, 1758" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Linnaeus, 1758" NAMECACHE="Sphingidae" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="3" RANK_ID="782" GENUSORUNINOMIAL="Sphingidae" NOMENCLATURALREFERENCE_ID="1" BASIONYMAUTHORTEAM_ID="[null]" COMBINATIONAUTHORTEAM_ID="[null]"/>
<TAXONNAMEBASE DTYPE="ZoologicalName" ID="4" CREATED="2008-12-10 09:56:07.0" UUID="446d8d76-e206-49e1-b6da-d06ce1f296e1" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="Lathoe Fabricius, 1807" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Fabricius, 1807" NAMECACHE="Laothoe" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="4" RANK_ID="774" GENUSORUNINOMIAL="Laothoe" NOMENCLATURALREFERENCE_ID="1" BASIONYMAUTHORTEAM_ID="[null]" COMBINATIONAUTHORTEAM_ID="[null]"/>
<TAXONNAMEBASE DTYPE="ZoologicalName" ID="5" CREATED="2008-12-10 09:56:07.0" UUID="3d0b9061-fc9d-4de5-9dc1-341e10eb139e" UPDATED="2008-12-10 09:56:07.238" TITLECACHE="Smerinthus Latreille, 1802" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Latreille, 1802" NAMECACHE="Smerinthus" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="5" RANK_ID="774" GENUSORUNINOMIAL="Smerinthus" NOMENCLATURALREFERENCE_ID="1" BASIONYMAUTHORTEAM_ID="[null]" COMBINATIONAUTHORTEAM_ID="[null]"/>
--- /dev/null
-import junit.framework.Assert;\r
+ // $Id$\r
+ /**\r
+ * Copyright (C) 2009 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.print;\r
+ \r
+ import java.io.File;\r
+ import java.sql.SQLException;\r
+ import java.util.UUID;\r
+ \r
-import org.junit.BeforeClass;\r
++import org.junit.Assert;\r
+ \r
+ import org.apache.log4j.Logger;\r
+ import org.jdom.Element;\r
+ \r
+ import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
+ import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;\r
+ import eu.etaxonomy.cdm.common.CdmUtils;\r
+ import eu.etaxonomy.cdm.common.monitor.DefaultProgressMonitor;\r
+ import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
+ import eu.etaxonomy.cdm.database.CdmDataSource;\r
+ import eu.etaxonomy.cdm.database.DbSchemaValidation;\r
+ import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+ import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
+ import eu.etaxonomy.cdm.print.out.pdf.PdfOutputModule;\r
+ import eu.etaxonomy.cdm.print.out.xml.XMLOutputModule;\r
+ \r
+ /**\r
+ * @author l.morris\r
+ * @date Mar 7, 2013\r
+ *\r
+ */\r
+ public class PubTest {\r
+ \r
+ private static final Logger logger = Logger.getLogger(PubTest.class);\r
+ \r
+ private static PublishConfigurator configurator; \r
+ \r
+ private static Publisher publisher;\r
+ \r
+ \r
+ /**\r
+ * @throws java.lang.Exception\r
+ */\r
+ public static void setUpBeforeClass() throws Exception {\r
+ \r
+ ICdmDataSource dataSource = customDataSource();\r
+ \r
+ //Resource applicationContextResource, ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading, IProgressMonitor progressMonitor)\r
+ IProgressMonitor progressMonitor = DefaultProgressMonitor.NewInstance();\r
+ \r
+ //Connecting to a CDMDataSource\r
+ ICdmApplicationConfiguration app = CdmApplicationController.NewInstance(null, dataSource, DbSchemaValidation.VALIDATE, false, progressMonitor);\r
+ //ICdmApplicationConfiguration app = CdmApplicationController.NewInstance(resource, dataSource, DbSchemaValidation.VALIDATE, false, progressMonitor);\r
+ //configurator = PublishConfigurator.NewLocalInstance(CdmStore.getCurrentApplicationConfiguration());//from taxeditor GeneratePdfHandler\r
+ configurator = PublishConfigurator.NewLocalInstance(app);\r
+ \r
+ IXMLEntityFactory factory = configurator.getFactory();\r
+ \r
+ UUID taxonNodeUuid = UUID.fromString("a605e87e-113e-4ebd-ad97-f086b734b4da");//5168a18b-c0b1-44cc-80aa-7a5572fefe04\r
+ Element taxonNodeElement = factory.getTaxonNode(taxonNodeUuid);\r
+ configurator.addSelectedTaxonNodeElements(taxonNodeElement);\r
+ \r
+ configurator.setDoPublishEntireBranches(false);\r
+ \r
+ configurator.addOutputModule(new PdfOutputModule());\r
+ configurator.addOutputModule(new XMLOutputModule());\r
+ \r
+ \r
+ //configurator.setWebserviceUrl("http://localhost:8080/");\r
+ \r
+ // Element selectedTaxonNodeElement = new Element("TaxonNode");\r
+ // \r
+ // configurator.addSelectedTaxonNodeElements(selectedTaxonNodeElement);\r
+ \r
+ configurator.setExportFolder(new File("/Users/nho/tmp/"));\r
+ \r
+ }\r
+ \r
+ private static ICdmDataSource customDataSource() {\r
+ \r
+ String dataSourceName = CdmUtils.readInputLine("Database name: ");\r
+ String username = CdmUtils.readInputLine("Username: ");\r
+ String password = CdmUtils.readInputLine("Password: ");\r
+ \r
+ dataSourceName = (dataSourceName.equals("")) ? "cdm_test4" : dataSourceName;\r
+ username = (username.equals("")) ? "ljm" : username;\r
+ \r
+ ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance("160.45.63.201", "cdm_edit_flora_central_africa", 3306, "edit", password, NomenclaturalCode.ICBN);\r
+ //ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance("127.0.0.1", dataSourceName, 3306, username, password, NomenclaturalCode.ICBN);\r
+ //ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance("127.0.0.1", "cdm_edit_cichorieae", 3306, "ljm", password, NomenclaturalCode.ICBN);\r
+ //ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance("160.45.63.201", "cdm_edit_cichorieae", 3306, "edit", password, NomenclaturalCode.ICBN);\r
+ boolean connectionAvailable;\r
+ try {\r
+ connectionAvailable = dataSource.testConnection();\r
+ logger.debug("LORNA connection available " + connectionAvailable);\r
+ Assert.assertTrue("Testdatabase is not available", connectionAvailable);\r
+ \r
+ } catch (ClassNotFoundException e1) {\r
+ // TODO Auto-generated catch block\r
+ e1.printStackTrace();\r
+ } catch (SQLException e1) {\r
+ // TODO Auto-generated catch block\r
+ e1.printStackTrace();\r
+ }\r
+ return dataSource;\r
+ }\r
+ \r
+ \r
+ /**\r
+ * @param args\r
+ */\r
+ public static void main(String[] args) {\r
+ \r
+ PubTest pubTest = new PubTest();\r
+ try {\r
+ pubTest.setUpBeforeClass();\r
+ } catch (Exception e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ }\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+ \r
+ }\r
according WebAppContext attributes or to the environment variable\r
-->\r
<prop key="hibernate.hbm2ddl.auto">validate</prop><!-- !!! must never be set to 'update' !!! -->\r
-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>\r
++ <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</prop>\r
<prop key="hibernate.show_sql">false</prop>\r
<prop key="hibernate.format_sql">false</prop>\r
-- <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</prop>\r
++ <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.impl.FSDirectoryProvider</prop>\r
<prop key="hibernate.search.default.indexBase">${eu.etaxonomy.cdm.search.index.path}</prop><!-- set in applicationContext.xml -->\r
</props>\r
</property>\r
<props>\r
<prop key="hibernate.hbm2ddl.auto">validate</prop>\r
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>\r
-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>\r
++ <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</prop>\r
<prop key="hibernate.show_sql">true</prop>\r
<prop key="hibernate.format_sql">false</prop>\r
</props>\r
<props>\r
<prop key="hibernate.hbm2ddl.auto">validate</prop>\r
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>\r
-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>\r
++ <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</prop>\r
<prop key="hibernate.show_sql">false</prop>\r
<prop key="hibernate.format_sql">false</prop>\r
</props>\r
<props>
<prop key="hibernate.hbm2ddl.auto">validate</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
++ <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.format_sql">false</prop>
</props>
-->\r
<prop key="hibernate.hbm2ddl.auto">update</prop>\r
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>\r
-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>\r
++ <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</prop>\r
<prop key="hibernate.show_sql">false</prop>\r
<prop key="hibernate.format_sql">false</prop>\r
<prop key="hibernate.search.default.indexBase">${user.home}/.cdmLibrary/</prop>\r
import javax.naming.NamingException;\r
import javax.sql.DataSource;\r
\r
--import org.apache.commons.io.FileUtils;\r
import org.apache.commons.io.FilenameUtils;\r
import org.apache.log4j.Logger;\r
import org.springframework.beans.BeansException;\r
import net.sf.json.JsonConfig;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
++import org.apache.lucene.document.Fieldable;
/**
* @author Andreas Kohlbecker
@Override
public JSONObject processBeanSecondStep(Document document, JSONObject json, JsonConfig jsonConfig) {
-- List<Field> fields = document.getFields();
-- for (Field field : fields) {
++ List<Fieldable> fields = document.getFields();
++ for (Fieldable field : fields) {
// no need to handle multivalued fields, since we don't have these in case of the cdmlib
json.element(field.name(), field.stringValue());
}
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.LazyInitializationException;
--import org.hibernate.collection.PersistentCollection;
--import org.hibernate.engine.SessionImplementor;
++import org.hibernate.collection.spi.PersistentCollection;
++import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.proxy.HibernateProxy;
import org.hibernate.proxy.LazyInitializer;
import org.joda.time.DateTime;
private Taxon taxon;
private IBook sec;
private IBook book;
-- private Reference bookSection;
-- private TeamOrPersonBase authorTeam;
-- private NonViralName name;
++ private Reference<?> bookSection;
++ private TeamOrPersonBase<?> authorTeam;
++ private NonViralName<?> name;
private LSID lsid;
private TaxonDescription taxonDescription;
-- ReferenceFactory refFactory = ReferenceFactory.newInstance();
--
++
@BeforeClass
public static void onSetUp() {
DefaultTermInitializer defaultTermInitializer = new DefaultTermInitializer();
name = BotanicalName.NewInstance(null);
name.setNameCache("nameCache");
-- INomenclaturalReference nomenclaturalReference = refFactory.newArticle();
++ INomenclaturalReference nomenclaturalReference = ReferenceFactory.newArticle();
nomenclaturalReference.setTitleCache("nomenclaturalReference", true);
name.setNomenclaturalReference(nomenclaturalReference);
name.setNomenclaturalMicroReference("1");
name.setAuthorshipCache("authorshipCache");
name.setRank(Rank.SPECIES());
-- sec = refFactory.newBook();
++ sec = ReferenceFactory.newBook();
sec.setAuthorTeam(authorTeam);
sec.setTitleCache("sec.titleCache", true);
sec.setLsid(new LSID("urn:lsid:example.org:references:1"));
// ------------------------------------------------------
-- book = refFactory.newBook();
++ book = ReferenceFactory.newBook();
book.setTitle("Book.title");
book.setAuthorTeam(authorTeam);
book.setCreated(new DateTime(2004, 12, 25, 12, 0, 0, 0));
book.setVolume("Volume 1");
book.addSource(IdentifiableSource.NewInstance("http://persitent.IdentifiableSources.foo/1"));
-- bookSection = refFactory.newBookSection();
++ bookSection = ReferenceFactory.newBookSection();
bookSection.setInReference((Reference)book);
bookSection.setPages("999 ff.");
bookSection.setTitle("BookSection.title");
return null;
}
-- public Object getImplementation(SessionImplementor arg0)
-- throws HibernateException {
-- // TODO Auto-generated method stub
-- return null;
-- }
--
public Class getPersistentClass() {
// TODO Auto-generated method stub
return null;
}
-- public void setSession(SessionImplementor arg0)
-- throws HibernateException {
-- // TODO Auto-generated method stub
--
-- }
--
public void setUnwrap(boolean arg0) {
// TODO Auto-generated method stub
}
++ @Override
++ public Object getImplementation(
++ org.hibernate.engine.spi.SessionImplementor session)
++ throws HibernateException {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ @Override
++ public boolean isReadOnlySettingAvailable() {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ @Override
++ public boolean isReadOnly() {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ @Override
++ public void setReadOnly(boolean readOnly) {
++ // TODO Auto-generated method stub
++
++ }
++
++ @Override
++ public void setSession(
++ org.hibernate.engine.spi.SessionImplementor session)
++ throws HibernateException {
++ // TODO Auto-generated method stub
++
++ }
++
++ @Override
++ public void unsetSession() {
++ // TODO Auto-generated method stub
++
++ }
++
}
package eu.etaxonomy.cdm.remote.view;\r
\r
--import java.io.IOException;\r
import java.net.URI;\r
import java.util.ArrayList;\r
import java.util.HashMap;\r
import java.util.Map;\r
import java.util.Set;\r
\r
++import org.apache.log4j.Logger;\r
import org.custommonkey.xmlunit.XMLUnit;\r
import org.dozer.Mapper;\r
import org.hibernate.envers.RevisionType;\r
import org.unitils.spring.annotation.SpringApplicationContext;\r
import org.unitils.spring.annotation.SpringBeanByType;\r
\r
--import common.Logger;\r
--\r
++import eu.etaxonomy.cdm.api.service.pager.Pager;\r
++import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;\r
++import eu.etaxonomy.cdm.common.UriUtils;\r
import eu.etaxonomy.cdm.model.common.LSID;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.cdm.model.view.AuditEvent;\r
import eu.etaxonomy.cdm.model.view.AuditEventRecord;\r
import eu.etaxonomy.cdm.model.view.AuditEventRecordImpl;\r
--import eu.etaxonomy.cdm.api.service.pager.Pager;\r
--import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;\r
--import eu.etaxonomy.cdm.common.UriUtils;\r
import eu.etaxonomy.cdm.remote.dto.oaipmh.DeletedRecord;\r
import eu.etaxonomy.cdm.remote.dto.oaipmh.Granularity;\r
import eu.etaxonomy.cdm.remote.dto.oaipmh.MetadataPrefix;\r
import eu.etaxonomy.cdm.remote.dto.oaipmh.ResumptionToken;\r
import eu.etaxonomy.cdm.remote.dto.oaipmh.SetSpec;\r
--import eu.etaxonomy.cdm.remote.view.oaipmh.dc.GetRecordView;\r
import eu.etaxonomy.cdm.remote.view.oaipmh.IdentifyView;\r
import eu.etaxonomy.cdm.remote.view.oaipmh.ListIdentifiersView;\r
import eu.etaxonomy.cdm.remote.view.oaipmh.ListMetadataFormatsView;\r
--import eu.etaxonomy.cdm.remote.view.oaipmh.dc.ListRecordsView;\r
import eu.etaxonomy.cdm.remote.view.oaipmh.ListSetsView;\r
++import eu.etaxonomy.cdm.remote.view.oaipmh.dc.GetRecordView;\r
++import eu.etaxonomy.cdm.remote.view.oaipmh.dc.ListRecordsView;\r
\r
@SpringApplicationContext("file:./target/test-classes/eu/etaxonomy/cdm/applicationContext-test.xml")\r
public class OaiPmhViewTest extends UnitilsJUnit4 {\r
import java.util.Map;\r
import java.util.Set;\r
\r
--import javax.xml.transform.Result;\r
--import javax.xml.transform.Source;\r
--import javax.xml.transform.Transformer;\r
--import javax.xml.transform.TransformerFactory;\r
import javax.xml.transform.stream.StreamResult;\r
\r
import org.custommonkey.xmlunit.XMLAssert;\r
import org.custommonkey.xmlunit.XMLUnit;\r
--import org.hibernate.envers.event.AuditEventListener;\r
import org.joda.time.DateTime;\r
import org.joda.time.DateTimeZone;\r
import org.junit.Before;\r
<props>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
++ <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
<artifactId>lucene-highlighter</artifactId>
</dependency>
<dependency>
-- <!--
-- TODO temporarily added,
-- see http://dev.e-taxonomy.eu/trac/ticket/2031
-- Update Hibernate to latest stable 4.1.1
-- -->
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-grouping</artifactId>
-- <version>3.2.0</version>
-- </dependency>
-- <dependency>
-- <groupId>org.unitils</groupId>
-- <artifactId>unitils-core</artifactId>
-- <scope>test</scope>
-- </dependency>
-- <dependency>
-- <groupId>org.unitils</groupId>
-- <artifactId>unitils-database</artifactId>
-- <scope>test</scope>
-- </dependency>
-- <dependency>
-- <groupId>org.unitils</groupId>
-- <artifactId>unitils-dbmaintainer</artifactId>
-- <scope>test</scope>
</dependency>
++<!-- <dependency> -->
++<!-- <groupId>org.unitils</groupId> -->
++<!-- <artifactId>unitils-core</artifactId> -->
++<!-- <scope>test</scope> -->
++<!-- </dependency> -->
++<!-- <dependency> -->
++<!-- <groupId>org.unitils</groupId> -->
++<!-- <artifactId>unitils-database</artifactId> -->
++<!-- <scope>test</scope> -->
++<!-- </dependency> -->
++<!-- <dependency> -->
++<!-- <groupId>org.unitils</groupId> -->
++<!-- <artifactId>unitils-dbmaintainer</artifactId> -->
++<!-- <scope>test</scope> -->
++<!-- </dependency> -->
<dependency>
<groupId>org.unitils</groupId>
<artifactId>unitils-dbunit</artifactId>
<scope>test</scope>
</dependency>
-- <dependency>
-- <groupId>org.unitils</groupId>
-- <artifactId>unitils-easymock</artifactId>
-- <scope>test</scope>
-- </dependency>
-- <dependency>
-- <groupId>org.unitils</groupId>
-- <artifactId>unitils-mock</artifactId>
-- <scope>test</scope>
-- </dependency>
-- <dependency>
-- <groupId>org.unitils</groupId>
-- <artifactId>unitils-inject</artifactId>
-- <scope>test</scope>
-- </dependency>
-- <dependency>
-- <groupId>org.unitils</groupId>
-- <artifactId>unitils-orm</artifactId>
-- <scope>test</scope>
-- </dependency>
++<!-- <dependency> -->
++<!-- <groupId>org.unitils</groupId> -->
++<!-- <artifactId>unitils-easymock</artifactId> -->
++<!-- <scope>test</scope> -->
++<!-- </dependency> -->
++<!-- <dependency> -->
++<!-- <groupId>org.unitils</groupId> -->
++<!-- <artifactId>unitils-mock</artifactId> -->
++<!-- <scope>test</scope> -->
++<!-- </dependency> -->
++<!-- <dependency> -->
++<!-- <groupId>org.unitils</groupId> -->
++<!-- <artifactId>unitils-inject</artifactId> -->
++<!-- <scope>test</scope> -->
++<!-- </dependency> -->
++<!-- <dependency> -->
++<!-- <groupId>org.unitils</groupId> -->
++<!-- <artifactId>unitils-orm</artifactId> -->
++<!-- <exclusions> -->
++<!-- <exclusion> -->
++<!-- <groupId>javax.persistence</groupId> -->
++<!-- <artifactId>persistence-api</artifactId> -->
++<!-- </exclusion> -->
++<!-- </exclusions> -->
++<!-- <scope>test</scope> -->
++<!-- </dependency> -->
<dependency>
<groupId>org.unitils</groupId>
<artifactId>unitils-spring</artifactId>
<scope>test</scope>
</dependency>
-- <dependency>
-- <groupId>org.dbunit</groupId>
-- <artifactId>dbunit</artifactId>
-- </dependency>
++<!-- <dependency> -->
++<!-- <groupId>org.dbunit</groupId> -->
++<!-- <artifactId>dbunit</artifactId> -->
++<!-- <scope>test</scope> -->
++<!-- </dependency> -->
<dependency>
<groupId>xmlunit</groupId>
<artifactId>xmlunit</artifactId>
++ <scope>test</scope>
</dependency>
-- <dependency>
-- <groupId>com.carrotsearch</groupId>
-- <artifactId>junit-benchmarks</artifactId>
-- <scope>test</scope>
-- </dependency>
++<!-- <dependency> -->
++<!-- <groupId>com.carrotsearch</groupId> -->
++<!-- <artifactId>junit-benchmarks</artifactId> -->
++<!-- <scope>test</scope> -->
++<!-- </dependency> -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.test</artifactId>
package eu.etaxonomy.cdm.api.application;\r
\r
import java.util.EnumSet;\r
--import java.util.HashSet;\r
import java.util.List;\r
--import java.util.Set;\r
import java.util.UUID;\r
\r
import org.apache.log4j.Logger;\r
import org.springframework.core.io.Resource;\r
import org.springframework.security.access.PermissionEvaluator;\r
import org.springframework.security.authentication.ProviderManager;\r
--import org.springframework.security.core.GrantedAuthority;\r
import org.springframework.security.core.context.SecurityContext;\r
import org.springframework.security.core.context.SecurityContextHolder;\r
import org.springframework.transaction.PlatformTransactionManager;\r
import eu.etaxonomy.cdm.database.DbSchemaValidation;\r
import eu.etaxonomy.cdm.database.ICdmDataSource;\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
--import eu.etaxonomy.cdm.model.common.CdmMetaData;\r
import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
--import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;\r
--import eu.etaxonomy.cdm.model.common.User;\r
import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;\r
--import eu.etaxonomy.cdm.persistence.hibernate.permission.Operation;\r
--import eu.etaxonomy.cdm.persistence.hibernate.permission.Role;\r
\r
\r
/**\r
import org.springframework.beans.factory.annotation.Autowired;\r
import org.springframework.context.ApplicationContext;\r
import org.springframework.context.ApplicationContextAware;\r
--import org.springframework.orm.hibernate3.HibernateTransactionManager;\r
++import org.springframework.orm.hibernate4.HibernateTransactionManager;\r
import org.springframework.security.access.PermissionEvaluator;\r
import org.springframework.security.authentication.ProviderManager;\r
import org.springframework.stereotype.Component;\r
logger.debug("Isolation level = " + txDef.getIsolationLevel());\r
logger.debug("Timeout = " + txDef.getTimeout());\r
logger.debug("Read Only = " + txDef.isReadOnly());\r
-- // org.springframework.orm.hibernate3.HibernateTransactionManager\r
++ // org.springframework.orm.hibernate4.HibernateTransactionManager\r
// provides more transaction/session-related debug information.\r
}\r
\r
}
for (T entity: entitiesToUpdate){
if (entity.getTitleCache() != null){
-- System.err.println(entity.getTitleCache());
++ //System.err.println(entity.getTitleCache());
}else{
-- System.err.println("no titleCache" + ((NonViralName)entity).getNameCache());
++ //System.err.println("no titleCache" + ((NonViralName)entity).getNameCache());
}
--
}
saveOrUpdate(entitiesToUpdate);
monitor.worked(list.size());
monitor.done();
}
++ /**
++ * @param cacheStrategy
++ * @param entitiesToUpdate
++ * @param entity
++ */
/**
* @param cacheStrategy
* @param entitiesToUpdate
private void updateTitleCacheForSingleEntity(
IIdentifiableEntityCacheStrategy<T> cacheStrategy,
List<T> entitiesToUpdate, T entity) {
++
++ assert (entity.isProtectedTitleCache() == false );
++
//exclude recursive inreferences
if (entity.isInstanceOf(Reference.class)){
-- Reference ref = CdmBase.deproxy(entity, Reference.class);
++ Reference<?> ref = CdmBase.deproxy(entity, Reference.class);
if (ref.getInReference() != null && ref.getInReference().equals(ref)){
return;
}
}
++ //define the correct cache strategy
IIdentifiableEntityCacheStrategy entityCacheStrategy = cacheStrategy;
if (entityCacheStrategy == null){
entityCacheStrategy = entity.getCacheStrategy();
}
}
entity.setCacheStrategy(entityCacheStrategy);
++
++
++ //old titleCache
entity.setProtectedTitleCache(true);
-- String titleCache = entity.getTitleCache();
++ String oldTitleCache = entity.getTitleCache();
entity.setProtectedTitleCache(false);
-- String nameCache = null;
++
++ //NonViralNames have more caches //TODO handle in NameService
++ String oldNameCache = null;
++ String oldFullTitleCache = null;
if (entity instanceof NonViralName ){
-- NonViralName nvn = (NonViralName) entity;
++ NonViralName<?> nvn = (NonViralName) entity;
if (!nvn.isProtectedNameCache()){
nvn.setProtectedNameCache(true);
-- nameCache = nvn.getNameCache();
++ oldNameCache = nvn.getNameCache();
nvn.setProtectedNameCache(false);
}
--
--
++ if (!nvn.isProtectedFullTitleCache()){
++ nvn.setProtectedFullTitleCache(true);
++ oldFullTitleCache = nvn.getFullTitleCache();
++ nvn.setProtectedFullTitleCache(false);
++ }
}
setOtherCachesNull(entity); //TODO find better solution
++
String newTitleCache = entityCacheStrategy.getTitleCache(entity);
-- if (titleCache == null || titleCache != null && ! titleCache.equals(newTitleCache) ){
++ if (oldTitleCache == null || oldTitleCache != null && ! oldTitleCache.equals(newTitleCache) ){
entity.setTitleCache(null, false);
entity.getTitleCache();
if (entity instanceof NonViralName){
-- NonViralName nvn = (NonViralName) entity;
-- String newnameCache = nvn.getNameCache();
++ NonViralName<?> nvn = (NonViralName) entity;
++ nvn.getNameCache();
++ nvn.getFullTitleCache();
}
entitiesToUpdate.add(entity);
}else if (entity instanceof NonViralName){
-- NonViralName nvn = (NonViralName) entity;
++ NonViralName<?> nvn = (NonViralName) entity;
String newnameCache = nvn.getNameCache();
-- if (nameCache == null || (nameCache != null && !nameCache.equals(newnameCache))){
++ String newFullTitleCache = nvn.getFullTitleCache();
++ if (oldNameCache == null || (oldNameCache != null && !oldNameCache.equals(newnameCache))){
++ entitiesToUpdate.add(entity);
++ }else if (oldFullTitleCache == null || (oldFullTitleCache != null && !oldFullTitleCache.equals(newFullTitleCache))){
entitiesToUpdate.add(entity);
}
}
\r
/**\r
* @deprecated To be removed for harmonization see http://dev.e-taxonomy.eu/trac/wiki/CdmLibraryConventions\r
++ * Replace by load(UUID, propertyPaths)\r
*/\r
@Deprecated\r
public NonViralName findNameByUuid(UUID uuid, List<String> propertyPaths){\r
@Override\r
protected void setOtherCachesNull(TaxonNameBase name) {\r
if (name.isInstanceOf(NonViralName.class)){\r
-- NonViralName nvn = CdmBase.deproxy(name, NonViralName.class);\r
++ NonViralName<?> nvn = CdmBase.deproxy(name, NonViralName.class);\r
if (! nvn.isProtectedNameCache()){\r
nvn.setNameCache(null, false);\r
}\r
LuceneSearch luceneSearch = new LuceneSearch(getSession(), TaxonBase.class);\r
QueryFactory queryFactory = new QueryFactory(luceneSearch);\r
\r
-- SortField[] sortFields = new SortField[]{SortField.FIELD_SCORE, new SortField("titleCache__sort", false)};\r
++ SortField[] sortFields = new SortField[]{SortField.FIELD_SCORE, new SortField("titleCache__sort", SortField.STRING, false)};\r
luceneSearch.setSortFields(sortFields);\r
\r
// ---- search criteria\r
LuceneSearch luceneSearch = new LuceneSearch(getSession(), DescriptionElementBase.class);\r
QueryFactory queryFactory = new QueryFactory(luceneSearch);\r
\r
-- SortField[] sortFields = new SortField[]{SortField.FIELD_SCORE, new SortField("inDescription.taxon.titleCache__sort", false)};\r
++ SortField[] sortFields = new SortField[]{SortField.FIELD_SCORE, new SortField("inDescription.taxon.titleCache__sort", SortField.STRING, false)};\r
luceneSearch.setSortFields(sortFields);\r
\r
// ---- search criteria\r
HashMap <UUID, ZoologicalName> zooHashMap = new HashMap<UUID, ZoologicalName>();\r
\r
\r
-- UUID uuid= taxon.getName().getUuid();\r
-- ZoologicalName taxonName = getZoologicalName(uuid, zooHashMap);\r
++ UUID nameUuid= taxon.getName().getUuid();\r
++ ZoologicalName taxonName = getZoologicalName(nameUuid, zooHashMap);\r
String epithetOfTaxon = null;\r
String infragenericEpithetOfTaxon = null;\r
String infraspecificEpithetOfTaxon = null;\r
\r
if (node.getClassification().equals(classification)){\r
if (!node.isTopmostNode()){\r
- TaxonNode parent = (TaxonNode)node.getParent();\r
+ TaxonNode parent = node.getParent();\r
parent = (TaxonNode)HibernateProxyHelper.deproxy(parent);\r
-- TaxonNameBase parentName = parent.getTaxon().getName();\r
++ TaxonNameBase<?,?> parentName = parent.getTaxon().getName();\r
ZoologicalName zooParentName = HibernateProxyHelper.deproxy(parentName, ZoologicalName.class);\r
Taxon parentTaxon = (Taxon)HibernateProxyHelper.deproxy(parent.getTaxon());\r
Rank rankOfTaxon = taxonName.getRank();\r
\r
\r
if (type.equals(SynonymRelationshipType.INFERRED_EPITHET_OF())){\r
-- Set<String> genusNames = new HashSet<String>();\r
\r
++ \r
for (SynonymRelationship synonymRelationOfParent:synonymRelationshipsOfParent){\r
Synonym syn = synonymRelationOfParent.getSynonym();\r
\r
TaxonNameBase parentName, TaxonBase syn) {\r
\r
Synonym inferredEpithet;\r
-- TaxonNameBase synName;\r
++ TaxonNameBase<?,?> synName;\r
ZoologicalName inferredSynName;\r
HibernateProxyHelper.deproxy(syn);\r
\r
String idInSourceSyn = getIdInSource(syn);\r
String idInSourceTaxon = getIdInSource(taxon);\r
// Determine the sourceReference\r
-- Reference sourceReference = syn.getSec();\r
++ Reference<?> sourceReference = syn.getSec();\r
\r
if (sourceReference == null){\r
logger.warn("The synonym has no sec reference because it is a misapplied name! Take the sec reference of taxon");\r
}*/\r
String taxonId = idInSourceTaxon+ "; " + idInSourceSyn;\r
\r
-- IdentifiableSource originalSource;\r
-- originalSource = IdentifiableSource.NewInstance(taxonId, INFERRED_EPITHET_NAMESPACE, sourceReference, null);\r
++ \r
++ IdentifiableSource originalSource = IdentifiableSource.NewInstance(taxonId, INFERRED_EPITHET_NAMESPACE, sourceReference, null);\r
\r
inferredEpithet.addSource(originalSource);\r
\r
import java.io.ByteArrayInputStream;
import java.io.InputStream;
++import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service("lsidDataService")
@Transactional
public class LsidDataServiceImpl implements LSIDDataService {
--
++ private static final Logger logger = Logger.getLogger(LsidDataServiceImpl.class);
++
private LSIDRegistry lsidRegistry;
@Autowired
}
public InputStream getData(LSID lsid) throws LSIDServerException {
-- IIdentifiableDao identfiableDAO = lsidRegistry.lookupDAO(lsid);
++ IIdentifiableDao<?> identfiableDAO = lsidRegistry.lookupDAO(lsid);
if(identfiableDAO == null) { // we do not have a mapping for lsids with this authority or namespace
throw new LSIDServerException(LSIDException.UNKNOWN_LSID, "Unknown LSID");
}
public InputStream getDataByRange(LSID lsid, Integer start, Integer length)
throws LSIDServerException {
-- IIdentifiableDao identfiableDAO = lsidRegistry.lookupDAO(lsid);
++ IIdentifiableDao<?> identfiableDAO = lsidRegistry.lookupDAO(lsid);
if(identfiableDAO == null) { // we do not have a mapping for lsids with this authority or namespace
throw new LSIDServerException(LSIDException.UNKNOWN_LSID, "Unknown LSID");
}
}
public void initService(LSIDServiceConfig arg0) throws LSIDServerException {
-- // TODO Auto-generated method stub
--
++ //TODO
++ logger.warn("initService(LSIDServiceConfig) not yet implemented");
}
}
import org.hibernate.search.FullTextSession;
import org.hibernate.search.Search;
import org.springframework.beans.factory.annotation.Autowired;
--import org.springframework.orm.hibernate3.HibernateTransactionManager;
++import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.stereotype.Component;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.Transactional;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.MultiReader;
++import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.IndexSearcher;
--import org.apache.lucene.search.Searcher;
--import org.apache.lucene.search.BooleanClause.Occur;
--import org.hibernate.Session;
import org.hibernate.search.Search;
import org.hibernate.search.SearchFactory;
--import org.hibernate.search.reader.ReaderProvider;
--import org.hibernate.search.store.DirectoryProvider;
++import org.hibernate.search.indexes.IndexReaderAccessor;
import eu.etaxonomy.cdm.model.common.CdmBase;
* @return
*/
@Override
-- public Searcher getSearcher() {
++ public IndexSearcher getSearcher() {
if(searcher == null){
SearchFactory searchFactory = Search.getFullTextSession(session).getSearchFactory();
List<IndexReader> readers = new ArrayList<IndexReader>();
for(Class<? extends CdmBase> type : directorySelectClasses){
-- DirectoryProvider[] directoryProviders = searchFactory.getDirectoryProviders(type);
-- logger.info(directoryProviders[0].getDirectory().toString());
--
-- ReaderProvider readerProvider = searchFactory.getReaderProvider();
-- readers.add(readerProvider.openReader(directoryProviders[0]));
++ //OLD
++// DirectoryProvider[] directoryProviders = searchFactory.getDirectoryProviders(type);
++// logger.info(directoryProviders[0].getDirectory().toString());
++
++// ReaderProvider readerProvider = searchFactory.getReaderProvider();
++ IndexReaderAccessor ira = searchFactory.getIndexReaderAccessor();
++ IndexReader reader = ira.open(type);
++// readers.add(readerProvider.openReader(directoryProviders[0]));
++ readers.add(reader);
}
if(readers.size() > 1){
MultiReader multireader = new MultiReader(readers.toArray(new IndexReader[readers.size()]), true);
import java.io.IOException;
import java.util.Collection;
--import javax.management.RuntimeErrorException;
--
import org.apache.log4j.Logger;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.MultiCollector;
import org.apache.lucene.search.Query;
--import org.apache.lucene.search.Searcher;
import org.apache.lucene.search.Sort;
import org.apache.lucene.search.SortField;
import org.apache.lucene.search.TermQuery;
--import org.apache.lucene.search.grouping.AllGroupsCollector;
--import org.apache.lucene.search.grouping.FirstPassGroupingCollector;
import org.apache.lucene.search.grouping.GroupDocs;
import org.apache.lucene.search.grouping.SearchGroup;
--import org.apache.lucene.search.grouping.SecondPassGroupingCollector;
++import org.apache.lucene.search.grouping.TermAllGroupsCollector;
++import org.apache.lucene.search.grouping.TermFirstPassGroupingCollector;
++import org.apache.lucene.search.grouping.TermSecondPassGroupingCollector;
import org.apache.lucene.search.grouping.TopGroups;
++import org.apache.lucene.util.Version;
import org.hibernate.Session;
++import org.hibernate.search.ProjectionConstants;
import org.hibernate.search.Search;
import org.hibernate.search.SearchFactory;
--import org.hibernate.search.engine.DocumentBuilder;
--import org.hibernate.search.reader.ReaderProvider;
--import org.hibernate.search.store.DirectoryProvider;
import eu.etaxonomy.cdm.hibernate.search.GroupByTaxonClassBridge;
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.description.TextData;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
++import eu.etaxonomy.cdm.persistence.dao.hibernate.AlternativeSpellingSuggestionParser;
/**
*
/**
* @return
*/
-- public Searcher getSearcher() {
++ public IndexSearcher getSearcher() {
if(searcher == null){
searcher = new IndexSearcher(getIndexReader());
searcher.setDefaultFieldSortScoring(true, true);
public IndexReader getIndexReader() {
SearchFactory searchFactory = Search.getFullTextSession(session).getSearchFactory();
-- DirectoryProvider[] directoryProviders = searchFactory.getDirectoryProviders(getDirectorySelectClass());
-- logger.info(directoryProviders[0].getDirectory().toString());
++// OLD
++// DirectoryProvider[] directoryProviders = searchFactory.getDirectoryProviders(getDirectorySelectClass());
++// logger.info(directoryProviders[0].getDirectory().toString());
-- ReaderProvider readerProvider = searchFactory.getReaderProvider();
-- IndexReader reader = readerProvider.openReader(directoryProviders[0]);
++// ReaderProvider readerProvider = searchFactory.getReaderProvider();
++// IndexReader reader = readerProvider.openReader(directoryProviders[0]);
++
++ IndexReader reader = searchFactory.getIndexReaderAccessor().open(getDirectorySelectClass());
return reader;
}
*/
public QueryParser getQueryParser() {
Analyzer analyzer = getAnalyzer();
-- QueryParser parser = new QueryParser("titleCache", analyzer);
++ Version version = AlternativeSpellingSuggestionParser.version;
++ QueryParser parser = new QueryParser(version, "titleCache", analyzer);
return parser;
}
// perform the search (needs two passes for grouping)
// - first pass
-- FirstPassGroupingCollector firstPassCollector = new FirstPassGroupingCollector(GROUP_BY_FIELD, withinGroupSort, limit);
++ TermFirstPassGroupingCollector firstPassCollector = new TermFirstPassGroupingCollector(GROUP_BY_FIELD, withinGroupSort, limit);
getSearcher().search(fullQuery, firstPassCollector);
-- Collection<SearchGroup> topGroups = firstPassCollector.getTopGroups(0, true); // no offset here since we need the first item for the max score
++ Collection<SearchGroup<String>> topGroups = firstPassCollector.getTopGroups(0, true); // no offset here since we need the first item for the max score
if (topGroups == null) {
return null;
boolean getScores = true;
boolean getMaxScores = true;
boolean fillFields = true;
-- AllGroupsCollector allGroupsCollector = new AllGroupsCollector(GROUP_BY_FIELD);
-- SecondPassGroupingCollector secondPassCollector = new SecondPassGroupingCollector(GROUP_BY_FIELD, topGroups, groupSort, withinGroupSort, maxDocsPerGroup , getScores, getMaxScores, fillFields);
++ TermAllGroupsCollector allGroupsCollector = new TermAllGroupsCollector(GROUP_BY_FIELD);
++ TermSecondPassGroupingCollector secondPassCollector = new TermSecondPassGroupingCollector(GROUP_BY_FIELD, topGroups, groupSort, withinGroupSort, maxDocsPerGroup , getScores, getMaxScores, fillFields);
getSearcher().search(fullQuery, MultiCollector.wrap(secondPassCollector, allGroupsCollector));
-- TopGroups groupsResult = secondPassCollector.getTopGroups(0); // no offset here since we need the first item for the max score
++ TopGroups<String> groupsResult = secondPassCollector.getTopGroups(0); // no offset here since we need the first item for the max score
// get max score from very first result
float maxScore = groupsResult.groups[0].maxScore;
BooleanQuery filteredQuery = new BooleanQuery();
BooleanQuery classFilter = new BooleanQuery();
-- Term t = new Term(DocumentBuilder.CLASS_FIELDNAME, clazz.getName());
++ Term t = new Term(ProjectionConstants.OBJECT_CLASS, clazz.getName());
TermQuery termQuery = new TermQuery(t);
classFilter.setBoost(0);
*
*/
public class TopGroupsWithMaxScore{
-- public TopGroups topGroups;
++ public TopGroups<String> topGroups;
public float maxScore = Float.NaN;
-- TopGroupsWithMaxScore(TopGroups topGroups, int offset, int totalGroupCount, float maxScore){
++ TopGroupsWithMaxScore(TopGroups<String> topGroups, int offset, int totalGroupCount, float maxScore){
this.maxScore = maxScore;
-- TopGroups newTopGroups;
++ TopGroups<String> newTopGroups;
if(offset > 0){
-- GroupDocs[] newGroupDocs = new GroupDocs[topGroups.groups.length - offset];
++ GroupDocs<String>[] newGroupDocs = new GroupDocs[topGroups.groups.length - offset];
for(int i = offset; i < topGroups.groups.length; i++){
newGroupDocs[i - offset] = topGroups.groups[i];
}
-- newTopGroups = new TopGroups(
++ newTopGroups = new TopGroups<String>(
topGroups.groupSort,
topGroups.withinGroupSort,
topGroups.totalHitCount,
} else {
newTopGroups = topGroups;
}
-- this.topGroups = new TopGroups(newTopGroups, totalGroupCount);
++ this.topGroups = new TopGroups<String>(newTopGroups, totalGroupCount);
}
}
import java.util.Map;
import org.apache.lucene.document.Document;
--import org.hibernate.search.engine.DocumentBuilder;
++import org.hibernate.search.ProjectionConstants;
import eu.etaxonomy.cdm.model.common.CdmBase;
public void addDoc(Document doc) {
-- String key = doc.getValues(DocumentBuilder.CLASS_FIELDNAME)[0] + "." + doc.getValues(LuceneSearch.ID_FIELD)[0];
++ String key = doc.getValues(ProjectionConstants.OBJECT_CLASS)[0] + "." + doc.getValues(LuceneSearch.ID_FIELD)[0];
this.docs.put(key, doc);
}
import java.io.IOException;
import java.util.ArrayList;
--import java.util.Arrays;
--import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.search.WildcardQuery;
import org.apache.lucene.search.grouping.GroupDocs;
--import org.apache.lucene.search.grouping.TopGroups;
--import org.hibernate.search.engine.DocumentBuilder;
++import org.hibernate.search.ProjectionConstants;
import eu.etaxonomy.cdm.api.service.search.LuceneSearch.TopGroupsWithMaxScore;
import eu.etaxonomy.cdm.model.CdmBaseType;
*/
private String findId(Map<CdmBaseType,String> idFieldMap, Document doc) {
-- String docClassName = doc.getValues(DocumentBuilder.CLASS_FIELDNAME)[0];
++ String docClassName = doc.getValues(ProjectionConstants.OBJECT_CLASS)[0];
String id = null;
for(CdmBaseType baseType : idFieldMap.keySet()){
never be without security\r
======================================================================\r
-->\r
-- <context:component-scan base-package="eu/etaxonomy/cdm/persistence">\r
++\r
++ <context:component-scan base-package="eu/etaxonomy/cdm/persistence">\r
<context:exclude-filter type="regex" expression="eu\.etaxonomy\.cdm\.persistence\.dao\.hibernate\.taxon\.TaxonAlternativeSpellingSuggestionParser"/>\r
</context:component-scan>\r
\r
*/\r
package eu.etaxonomy.cdm.api.facade;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.Before;\r
--import org.junit.BeforeClass;\r
import org.junit.Test;\r
\r
import eu.etaxonomy.cdm.model.agent.Person;\r
import eu.etaxonomy.cdm.model.agent.Team;\r
--import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;\r
import eu.etaxonomy.cdm.model.common.Language;\r
import eu.etaxonomy.cdm.model.common.LanguageString;\r
import eu.etaxonomy.cdm.model.common.TimePeriod;\r
String exsiccatum = "Greuter, Pl. Dahlem. 456";\r
String accessionNumber = "8909756";\r
String catalogNumber = "UU879873590";\r
-- TaxonNameBase taxonName = BotanicalName.NewInstance(Rank.GENUS(), "Abies", null, null, null, null, null, null, null);\r
++ TaxonNameBase<?,?> taxonName = BotanicalName.NewInstance(Rank.GENUS(), "Abies", null, null, null, null, null, null, null);\r
String collectorsNumber = "234589913A34";\r
Collection collection = Collection.NewInstance();\r
\r
*/\r
package eu.etaxonomy.cdm.api.facade;\r
\r
--import junit.framework.Assert;\r
--\r
import org.apache.log4j.Logger;\r
++import org.junit.Assert;\r
import org.junit.Before;\r
import org.junit.Test;\r
\r
import eu.etaxonomy.cdm.model.agent.Person;\r
import eu.etaxonomy.cdm.model.agent.Team;\r
--import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;\r
import eu.etaxonomy.cdm.model.common.Language;\r
import eu.etaxonomy.cdm.model.common.LanguageString;\r
import eu.etaxonomy.cdm.model.common.TimePeriod;\r
String exsiccatum = "Greuter, Pl. Dahlem. 456";\r
String accessionNumber = "8909756";\r
String catalogNumber = "UU879873590";\r
-- TaxonNameBase taxonName = BotanicalName.NewInstance(Rank.GENUS(), "Abies", null, null, null, null, null, null, null);\r
++ TaxonNameBase<?,?> taxonName = BotanicalName.NewInstance(Rank.GENUS(), "Abies", null, null, null, null, null, null, null);\r
String collectorsNumber = "234589913A34";\r
Collection collection = Collection.NewInstance();\r
\r
import java.util.List;
import java.util.UUID;
--import junit.framework.Assert;
++import org.junit.Assert;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import java.util.Set;\r
import java.util.UUID;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.Ignore;\r
*\r
*/\r
public class CommonServiceImplTest extends CdmIntegrationTest {\r
++ @SuppressWarnings("unused")\r
private static final Logger logger = Logger.getLogger(CommonServiceImplTest.class);\r
\r
@SpringBeanByType\r
\r
@SpringBeanByType\r
private IReferenceService referenceService;\r
--\r
-- @SpringBeanByType\r
-- private IAgentService agentService;\r
--\r
-- @SpringBeanByType\r
-- private IUserService userService;\r
++//\r
++// @SpringBeanByType\r
++// private IAgentService agentService;\r
++//\r
++// @SpringBeanByType\r
++// private IUserService userService;\r
\r
@SpringBeanByType\r
private IOccurrenceService occurrenceService;\r
@DataSet\r
@Ignore\r
public final void testGetReferencingObjects() {\r
-- ReferenceFactory refFactory = ReferenceFactory.newInstance();\r
BotanicalName name = BotanicalName.NewInstance(Rank.SPECIES());\r
name.setTitleCache("A name", true);\r
-- Reference ref1 = refFactory.newArticle();\r
++ Reference<?> ref1 = ReferenceFactory.newArticle();\r
Taxon taxon = Taxon.NewInstance(name, ref1);\r
Person author = Person.NewInstance();\r
author.setTitleCache("Author", true);\r
// occurrenceService.save(spec1);\r
\r
UUID uuidSpec = UUID.fromString("41539e9c-3764-4f14-9712-2d07d00c8e4c");\r
-- SpecimenOrObservationBase spec1 = occurrenceService.find(uuidSpec);\r
++ SpecimenOrObservationBase<?> spec1 = occurrenceService.find(uuidSpec);\r
\r
\r
Set<CdmBase> referencedObjects = service.getReferencingObjects(spec1);\r
}\r
\r
\r
--// @Test\r
-- public final void printDataSet() {\r
-- printDataSet(System.out);\r
-- }\r
--\r
--\r
@Test\r
@DataSet\r
public final void testLoadCacheStrategyForReference(){\r
-- Reference ref = referenceService.load(UUID.fromString("613980ac-9bd5-43b9-a374-d71e1794688f"));\r
++ Reference<?> ref = referenceService.load(UUID.fromString("613980ac-9bd5-43b9-a374-d71e1794688f"));\r
ref.setType(ReferenceType.Article);\r
referenceService.update(ref);\r
referenceService.updateTitleCache();\r
--\r
}\r
}\r
import java.util.Set;\r
import java.util.UUID;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.Test;\r
@Test\r
@DataSet("CommonServiceImplTest.xml")\r
public void testChangeDescriptionElement(){\r
-- DescriptionBase descBase = service.find(UUID.fromString("eb17b80a-9be6-4642-a6a8-b19a318925e6"));\r
++ DescriptionBase<?> descBase = service.find(UUID.fromString("eb17b80a-9be6-4642-a6a8-b19a318925e6"));\r
Set<DescriptionElementBase> elements = descBase.getElements();\r
-- Iterator iterator = elements.iterator();\r
++ Iterator<?> iterator = elements.iterator();\r
while (iterator.hasNext()){\r
DescriptionElementBase base = (DescriptionElementBase) iterator.next();\r
if (base instanceof TextData){\r
if (test instanceof TextData){\r
\r
Set <Entry<Language,LanguageString>> entries = ((TextData) test).getMultilanguageText().entrySet();\r
-- Iterator entryIterator = entries.iterator();\r
++ Iterator<?> entryIterator = entries.iterator();\r
while (entryIterator.hasNext()){\r
Entry <Language, LanguageString> entry = (Entry<Language, LanguageString>) entryIterator.next();\r
LanguageString langString = entry.getValue();\r
\r
import java.util.UUID;\r
\r
++import org.apache.log4j.Level;\r
import org.apache.log4j.Logger;\r
import org.junit.Assert;\r
import org.junit.Test;\r
import org.unitils.dbunit.annotation.ExpectedDataSet;\r
import org.unitils.spring.annotation.SpringBeanByType;\r
\r
++import eu.etaxonomy.cdm.model.common.CdmBase;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
\r
*/\r
@Transactional(TransactionMode.DISABLED)\r
public class IdentifiableServiceBaseTest extends CdmTransactionalIntegrationTest {\r
++ @SuppressWarnings("unused")\r
private static final Logger logger = Logger.getLogger(IdentifiableServiceBaseTest.class);\r
\r
\r
Class clazz = TaxonNameBase.class;\r
int stepSize = 2;\r
nameService.updateTitleCache(clazz, stepSize, null, null);\r
--\r
--// TaxonNameBase name = nameService.find(UUID.fromString("5d74500b-9fd5-4d18-b9cd-cc1c8a372fec"));\r
--// System.out.println(name.getRank().getLabel());\r
--// setComplete();\r
--// endTransaction();\r
--// try {\r
--// printDataSet(System.out, new String[]{"TaxonNameBase","DefinedTermBase"});\r
--//// printDataSet(new FileOutputStream("C:\\tmp\\test.xml"), new String[]{"TaxonNameBase"});\r
--// } catch(Exception e) { \r
--// logger.warn(e);\r
--// } \r
-- \r
++ commit();\r
++// commitAndStartNewTransaction(new String[]{"TaxonNameBase","TaxonNameBase_AUD"}); \r
}\r
\r
\r
-- public static Logger getLogger() {\r
-- return logger;\r
-- }\r
}\r
*/\r
\r
@Ignore\r
--public class IdentificationKeyGeneratorTest {\r
++public class IdentificationKeyGeneratorTTT {\r
\r
//*************************** TESTS *********************** /\r
\r
+++ /dev/null
--
--package eu.etaxonomy.cdm.api.service;
--
--
--import org.junit.Ignore;
--
--import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
--
--/**
-- * NOTE: Removing MediaServiceImplTest led to problems with term loading, especially
-- * eu.etaxonomy.cdm.api.service.TaxonServiceImplTest.testMakeTaxonSynonym() is failing.
-- * Therefore we kept this dummy class.
-- * It is still unclear what the reason is. See ticket #2397
-- *
-- */
--@Ignore
--public class MediaServiceImplTest extends CdmIntegrationTest{
--
--}
@Ignore //FIXME Remove @Ignore once maximes code is completely comitted
public class NaturalLanguageGeneratorTest extends CdmIntegrationTest {
++ @SuppressWarnings("unused")
private static final Logger logger = Logger.getLogger(NaturalLanguageGeneratorTest.class);
@SpringBeanByType
import eu.etaxonomy.cdm.model.description.PolytomousKey;\r
import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
--import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
\r
/**\r
package eu.etaxonomy.cdm.api.service;
import java.util.List;
--import java.util.Set;
--
--import junit.framework.Assert;
++import org.junit.Assert;
import org.junit.Before;
--import org.junit.BeforeClass;
--import org.junit.Ignore;
import org.junit.Test;
import eu.etaxonomy.cdm.api.service.exception.HomotypicalGroupChangeException;
--import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
import eu.etaxonomy.cdm.model.name.NonViralName;
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
TaxonNameBase otherHeteroSynonymName = NonViralName.NewInstance(null);
Synonym s2 = Synonym.NewInstance(otherHeteroSynonymName, t1.getSec());
t1.addSynonym(s2, heteroTypicSynonymRelationshipType, null, null);
-- TaxonNameBase otherHeteroSynonymNameB = NonViralName.NewInstance(null);
++ TaxonNameBase<?,?> otherHeteroSynonymNameB = NonViralName.NewInstance(null);
otherHeteroSynonymName.addBasionym(otherHeteroSynonymNameB);
Synonym s2b = Synonym.NewInstance(otherHeteroSynonymNameB, t1.getSec());
t1.addSynonym(s2b, heteroTypicSynonymRelationshipType, null, null);
*/\r
@Test\r
public final void testRemoveTaxon() {\r
-- Taxon taxon = Taxon.NewInstance(BotanicalName.NewInstance(null), null);\r
++ Taxon taxon = Taxon.NewInstance(BotanicalName.NewInstance(Rank.UNKNOWN_RANK()), null);\r
UUID uuid = service.save(taxon);\r
service.delete(taxon);\r
TaxonBase<?> actualTaxon = service.find(uuid);\r
assertNull(actualTaxon);\r
}\r
\r
--// @Test\r
--// @DataSet("ClearDBDataSet.xml")\r
--// public final void clearDataBase() {\r
--//\r
--// setComplete();\r
--// commitAndStartNewTransaction(null);\r
--//\r
--// logger.info("DataBase tables cleared");\r
--// }\r
--\r
--\r
--// @Test\r
-- public final void testPrintDataSet() {\r
--//\r
--// printDataSet(System.out);\r
--// printDataSet(System.err, new String[] {"TAXONNODE", "AgentBase"});\r
--// printTableNames(System.err, "<%1$s />");\r
--// System.exit(0);\r
--\r
-- }\r
\r
@Test\r
public final void testMakeTaxonSynonym() {\r
assertEquals(groupTest, groupTest2);\r
}\r
\r
-- //@Test\r
++ @Test\r
++ @Ignore\r
public final void testChangeSynonymToAcceptedTaxon(){\r
Rank rank = Rank.SPECIES();\r
//HomotypicalGroup group = HomotypicalGroup.NewInstance();\r
Assert.fail("Move of single heterotypic synonym should not throw exception: " + e.getMessage());\r
}\r
//Asserts\r
-- //FIXME thows exception\r
++ //FIXME throws exception\r
commitAndStartNewTransaction(tableNames);\r
\r
// printDataSet(System.err, new String[]{"AgentBase", "TaxonBase"});\r
//\r
// printDataSet(System.err, new String[]{"TaxonBase"});\r
\r
-- heterotypicSynonym = (Synonym)service.load(uuidSyn5);\r
++ heterotypicSynonym = (Synonym)service.load(uuidSyn5);\r
\r
// printDataSet(System.err, new String[]{"TaxonBase"});\r
// System.exit(0);\r
\r
-- Assert.assertNotNull("Synonym should still exist", heterotypicSynonym);\r
++ Assert.assertNotNull("Synonym should still exist", heterotypicSynonym);\r
Assert.assertEquals("Synonym should still have 1 relation", 1, heterotypicSynonym.getSynonymRelations().size());\r
rel = heterotypicSynonym.getSynonymRelations().iterator().next();\r
Assert.assertEquals("Accepted taxon of single relation should be new taxon", newTaxon, rel.getAcceptedTaxon());\r
\r
@Test\r
@DataSet("TaxonServiceImplTest.testInferredSynonyms.xml")\r
--\r
public void testCreateInferredSynonymy(){\r
\r
UUID classificationUuid = UUID.fromString("aeee7448-5298-4991-b724-8d5b75a0a7a9");\r
Classification tree = classificationService.find(classificationUuid);\r
UUID taxonUuid = UUID.fromString("bc09aca6-06fd-4905-b1e7-cbf7cc65d783");\r
-- TaxonBase taxonBase = service.find(taxonUuid);\r
++ TaxonBase<?> taxonBase = service.find(taxonUuid);\r
List <TaxonBase> synonyms = service.list(Synonym.class, null, null, null, null);\r
assertEquals("Number of synonyms should be 2",2,synonyms.size());\r
Taxon taxon = (Taxon)taxonBase;\r
++ \r
//synonyms = taxonDao.getAllSynonyms(null, null);\r
//assertEquals("Number of synonyms should be 2",2,synonyms.size());\r
List<Synonym> inferredSynonyms = service.createInferredSynonyms(taxon, tree, SynonymRelationshipType.INFERRED_EPITHET_OF(), true);\r
assertNotNull("there should be a new synonym ", inferredSynonyms);\r
// System.err.println(inferredSynonyms.size());\r
assertEquals ("the name of inferred epithet should be SynGenus lachesis", inferredSynonyms.get(0).getTitleCache(), "SynGenus lachesis sec. ");\r
++ \r
inferredSynonyms = service.createInferredSynonyms(taxon, tree, SynonymRelationshipType.INFERRED_GENUS_OF(), true);\r
assertNotNull("there should be a new synonym ", inferredSynonyms);\r
// System.err.println(inferredSynonyms.get(0).getTitleCache());\r
assertEquals ("the name of inferred epithet should be SynGenus lachesis", inferredSynonyms.get(0).getTitleCache(), "Acherontia ciprosus sec. ");\r
++ \r
inferredSynonyms = service.createInferredSynonyms(taxon, tree, SynonymRelationshipType.POTENTIAL_COMBINATION_OF(), true);\r
assertNotNull("there should be a new synonym ", inferredSynonyms);\r
assertEquals ("the name of inferred epithet should be SynGenus lachesis", inferredSynonyms.get(0).getTitleCache(), "SynGenus ciprosus sec. ");\r
public final void testFindTaxaAndNames() {\r
\r
// pass 1\r
-- IFindTaxaAndNamesConfigurator configurator = new FindTaxaAndNamesConfiguratorImpl();\r
++ IFindTaxaAndNamesConfigurator<?> configurator = new FindTaxaAndNamesConfiguratorImpl();\r
configurator.setTitleSearchString("Abies*");\r
configurator.setMatchMode(MatchMode.BEGINNING);\r
configurator.setDoTaxa(true);\r
if (list.get(i) instanceof NonViralName) {\r
nameCache = ((NonViralName<?>) list.get(i)).getNameCache();\r
} else if (list.get(i) instanceof TaxonBase) {\r
-- TaxonNameBase taxonNameBase = ((TaxonBase) list.get(i)).getName();\r
++ TaxonNameBase<?,?> taxonNameBase = ((TaxonBase) list.get(i)).getName();\r
nameCache = HibernateProxyHelper.deproxy(taxonNameBase, NonViralName.class).getNameCache();\r
} else {\r
}\r
\r
Pager<SearchResult<TaxonBase>> pager;\r
\r
-- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Weißtanne", null, null, null, false, null, null, null, null);\r
++ pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Wei\u00dftanne", null, null, null, false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity when searching for CommonTaxonName", Integer.valueOf(1), pager.getCount());\r
\r
// the description containing the Nulltanne has no taxon attached, taxon.id = null\r
pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Nulltanne", null, null, null, false, null, null, null, null);\r
Assert.assertEquals("Expecting no entity when searching for 'Nulltanne' ", Integer.valueOf(0), pager.getCount());\r
\r
-- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Weißtanne", null, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
++ pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Wei\u00dftanne", null, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity when searching in German", Integer.valueOf(1), pager.getCount());\r
\r
-- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Weißtanne", null, null, Arrays.asList(new Language[]{Language.RUSSIAN()}), false, null, null, null, null);\r
++ pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Wei\u00dftanne", null, null, Arrays.asList(new Language[]{Language.RUSSIAN()}), false, null, null, null, null);\r
Assert.assertEquals("Expecting no entity when searching in Russian", Integer.valueOf(0), pager.getCount());\r
\r
}\r
\r
Pager<SearchResult<TaxonBase>> pager;\r
\r
-- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "WeiÃ\9f*", null, null, null, false, null, null, null, null);\r
++ pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "WeiÃ\83Ÿ*", null, null, null, false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity when searching for CommonTaxonName", Integer.valueOf(1), pager.getCount());\r
}\r
\r
pager = taxonService.findByDescriptionElementFullText(Distribution.class, "Abies", null, null, null, false, null, null, null, null);\r
Assert.assertEquals("Expecting no entity when searching for Distribution", Integer.valueOf(0), pager.getCount());\r
\r
-- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Ð\91алÑ\8cзам", null, null, Arrays.asList(new Language[]{}), false, null, null, null, null);\r
++ pager = taxonService.findByDescriptionElementFullText(TextData.class, "Ã\90â\80\98Ã\90°Ã\90»Ã\91Å\92Ã\90·Ã\90°Ã\90¼", null, null, Arrays.asList(new Language[]{}), false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity", Integer.valueOf(1), pager.getCount());\r
Assert.assertEquals("Abies balsamea sec. ", pager.getRecords().get(0).getEntity().getTitleCache());\r
\r
-- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Ð\91алÑ\8cзам", null, null, Arrays.asList(new Language[]{Language.RUSSIAN()}), false, null, null, null, null);\r
++ pager = taxonService.findByDescriptionElementFullText(TextData.class, "Ã\90â\80\98Ã\90°Ã\90»Ã\91Å\92Ã\90·Ã\90°Ã\90¼", null, null, Arrays.asList(new Language[]{Language.RUSSIAN()}), false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity", Integer.valueOf(1), pager.getCount());\r
Assert.assertEquals("Abies balsamea sec. ", pager.getRecords().get(0).getEntity().getTitleCache());\r
\r
-- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Ð\91алÑ\8cзам", null, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
++ pager = taxonService.findByDescriptionElementFullText(TextData.class, "Ã\90â\80\98Ã\90°Ã\90»Ã\91Å\92Ã\90·Ã\90°Ã\90¼", null, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
Assert.assertEquals("Expecting no entity", Integer.valueOf(0), pager.getCount());\r
\r
pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", null, null, Arrays.asList(new Language[]{Language.GERMAN(), Language.RUSSIAN()}), false, null, null, null, null);\r
DescriptionElementBase textData = descriptionService.getDescriptionElementByUuid(UUID.fromString(descriptionElementUuidStr[0]));\r
\r
((TextData)textData).removeText(Language.GERMAN());\r
-- ((TextData)textData).putText(Language.SPANISH_CASTILIAN(), "abeto balsámico");\r
++ ((TextData)textData).putText(Language.SPANISH_CASTILIAN(), "abeto balsÃ\83¡mico");\r
\r
descriptionService.saveDescriptionElement(textData);\r
commitAndStartNewTransaction(null);\r
pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", null, null, Arrays.asList(new Language[]{Language.GERMAN(), Language.RUSSIAN()}), false, null, null, null, null);\r
Assert.assertEquals("The german 'Balsam-Tanne' TextData should no longer be indexed", Integer.valueOf(0), pager.getCount());\r
pager = taxonService.findByDescriptionElementFullText(TextData.class, "abeto", null, null, Arrays.asList(new Language[]{Language.SPANISH_CASTILIAN()}), false, null, null, null, null);\r
-- Assert.assertEquals("expecting to find the SPANISH_CASTILIAN 'abeto balsámico'", Integer.valueOf(1), pager.getCount());\r
-- pager = taxonService.findByDescriptionElementFullText(TextData.class, "balsámico", null, null, null, false, null, null, null, null);\r
-- Assert.assertEquals("expecting to find the SPANISH_CASTILIAN 'abeto balsámico'", Integer.valueOf(1), pager.getCount());\r
++ Assert.assertEquals("expecting to find the SPANISH_CASTILIAN 'abeto balsÃ\83¡mico'", Integer.valueOf(1), pager.getCount());\r
++ pager = taxonService.findByDescriptionElementFullText(TextData.class, "balsÃ\83¡mico", null, null, null, false, null, null, null, null);\r
++ Assert.assertEquals("expecting to find the SPANISH_CASTILIAN 'abeto balsÃ\83¡mico'", Integer.valueOf(1), pager.getCount());\r
\r
//\r
// modify the DescriptionElement via the Description object\r
-- DescriptionBase description = descriptionService.find(UUID.fromString(inDescriptionUuidStr[0]));\r
++ DescriptionBase<?> description = descriptionService.find(UUID.fromString(inDescriptionUuidStr[0]));\r
Set<DescriptionElementBase> elements = description.getElements();\r
for( DescriptionElementBase elm : elements){\r
if(elm.getUuid().toString().equals(descriptionElementUuidStr[0])){\r
((TextData)elm).removeText(Language.SPANISH_CASTILIAN());\r
-- ((TextData)elm).putText(Language.POLISH(), "Jodła balsamiczna");\r
++ ((TextData)elm).putText(Language.POLISH(), "Jodła balsamiczna");\r
}\r
}\r
descriptionService.saveOrUpdate(description);\r
commitAndStartNewTransaction(null);\r
pager = taxonService.findByDescriptionElementFullText(TextData.class, "abeto", null, null, Arrays.asList(new Language[]{Language.SPANISH_CASTILIAN()}), false, null, null, null, null);\r
-- Assert.assertEquals("The spanish 'abeto balsámico' TextData should no longer be indexed", Integer.valueOf(0), pager.getCount());\r
++ Assert.assertEquals("The spanish 'abeto balsÃ\83¡mico' TextData should no longer be indexed", Integer.valueOf(0), pager.getCount());\r
pager = taxonService.findByDescriptionElementFullText(TextData.class, "balsamiczna", null, null, Arrays.asList(new Language[]{Language.POLISH()}), false, null, null, null, null);\r
-- Assert.assertEquals("expecting to find the POLISH 'Jodła balsamiczna'", Integer.valueOf(1), pager.getCount());\r
++ Assert.assertEquals("expecting to find the POLISH 'Jodła balsamiczna'", Integer.valueOf(1), pager.getCount());\r
}\r
\r
@SuppressWarnings("rawtypes")\r
d_abies_balsamea_new\r
.addElement(TextData\r
.NewInstance(\r
-- "Die Balsamtanne ist mit bis zu 30 m Höhe ein mittelgroÃ\9fer Baum und kann bis zu 200 Jahre alt werden",\r
++ "Die Balsamtanne ist mit bis zu 30 m HÃ\83¶he ein mittelgroÃ\83Ÿer Baum und kann bis zu 200 Jahre alt werden",\r
Language.GERMAN(), null));\r
t_abies_balsamea.addDescription(d_abies_balsamea_new);\r
taxonService.saveOrUpdate(t_abies_balsamea);\r
"DESCRIPTIONBASE"\r
});\r
\r
-- pager = taxonService.findByDescriptionElementFullText(TextData.class, "mittelgroÃ\9fer Baum", null, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
++ pager = taxonService.findByDescriptionElementFullText(TextData.class, "mittelgroÃ\83Ÿer Baum", null, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
Assert.assertEquals("the taxon should be found via the new Description", Integer.valueOf(1), pager.getCount());\r
}\r
\r
createRandomTaxonWithCommonName(NUM_OF_NEW_RADOM_ENTITIES);\r
\r
IFindTaxaAndNamesConfigurator configurator = new FindTaxaAndNamesConfiguratorImpl();\r
-- configurator.setTitleSearchString("WeiÃ\9f%");\r
++ configurator.setTitleSearchString("WeiÃ\83Ÿ%");\r
configurator.setMatchMode(MatchMode.BEGINNING);\r
configurator.setDoTaxa(false);\r
configurator.setDoSynonyms(false);\r
\r
long startMillis = System.currentTimeMillis();\r
for (int indx = 0; indx < BENCHMARK_ROUNDS; indx++) {\r
-- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "WeiÃ\9f*", null, null, null, false, null, null, null, null);\r
++ pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "WeiÃ\83Ÿ*", null, null, null, false, null, null, null, null);\r
if (logger.isDebugEnabled()) {\r
logger.debug("[" + indx + "]" + pager.getRecords().get(0).getEntity().getTitleCache());\r
}\r
\r
d_abies_alba.setUuid(UUID.fromString(D_ABIES_BALSAMEA_UUID));\r
// CommonTaxonName\r
-- d_abies_alba.addElement(CommonTaxonName.NewInstance("WeiÃ\9ftanne", Language.GERMAN()));\r
++ d_abies_alba.addElement(CommonTaxonName.NewInstance("WeiÃ\83Ÿtanne", Language.GERMAN()));\r
d_abies_alba.addElement(CommonTaxonName.NewInstance("silver fir", Language.ENGLISH()));\r
// TextData\r
TaxonDescription d_abies_balsamea = TaxonDescription.NewInstance(t_abies_balsamea);\r
d_abies_balsamea\r
.addElement(TextData\r
.NewInstance(\r
-- "Die Balsam-Tanne (Abies balsamea) ist eine Pflanzenart aus der Gattung der Tannen (Abies). Sie wächst im nordöstlichen Nordamerika, wo sie sowohl Tief- als auch Bergland besiedelt. Sie gilt als relativ anspruchslos gegenüber dem Standort und ist frosthart. In vielen Teilen des natürlichen Verbreitungsgebietes stellt sie die Klimaxbaumart dar.",\r
++ "Die Balsam-Tanne (Abies balsamea) ist eine Pflanzenart aus der Gattung der Tannen (Abies). Sie wÃ\83¤chst im nordÃ\83¶stlichen Nordamerika, wo sie sowohl Tief- als auch Bergland besiedelt. Sie gilt als relativ anspruchslos gegenÃ\83¼ber dem Standort und ist frosthart. In vielen Teilen des natÃ\83¼rlichen Verbreitungsgebietes stellt sie die Klimaxbaumart dar.",\r
Language.GERMAN(), null));\r
d_abies_balsamea\r
.addElement(TextData\r
.NewInstance(\r
-- "Ð\91алÑ\8cзам нÑ\8cÑ\8bв (лаÑ\82. Abies balsamea) â\80\93 бÑ\8bдмаÑ\81Ñ\81Ñ\8dзлӧн пожÑ\83м коÑ\82Ñ\8bÑ\80иÑ\81Ñ\8c нÑ\8cÑ\8bв Ñ\83вÑ\82Ñ\8bÑ\80Ñ\8bн Ñ\82оÑ\80Ñ\8cÑ\8f вид. Ð\9dÑ\8cÑ\8bвпÑ\83Ñ\8bÑ\81 бÑ\8bдмӧ 14â\80\9320 меÑ\82Ñ\80а вÑ\8bлÑ\8bна да овлӧ 10â\80\9360 Ñ\81м кÑ\8bза диамеÑ\82Ñ\80Ñ\8bн. Ð\9dÑ\8cÑ\8bвпÑ\83 панÑ\82аÑ\81Ñ\8cÓ§ Ð\9eйвÑ\8bв Ð\90меÑ\80икаÑ\8bн.",\r
++ "Ã\90â\80\98Ã\90°Ã\90»Ã\91Å\92Ã\90·Ã\90°Ã\90¼ Ã\90½Ã\91Å\92Ã\91â\80¹Ã\90² (Ã\90»Ã\90°Ã\91â\80\9a. Abies balsamea) ââ\82¬â\80\9c Ã\90±Ã\91â\80¹Ã\90´Ã\90¼Ã\90°Ã\91�Ã\91�Ã\91�Ã\90·Ã\90»Ã\93§Ã\90½ Ã\90¿Ã\90¾Ã\90¶Ã\91Æ\92Ã\90¼ Ã\90ºÃ\90¾Ã\91â\80\9aÃ\91â\80¹Ã\91â\82¬Ã\90¸Ã\91�Ã\91Å\92 Ã\90½Ã\91Å\92Ã\91â\80¹Ã\90² Ã\91Æ\92Ã\90²Ã\91â\80\9aÃ\91â\80¹Ã\91â\82¬Ã\91â\80¹Ã\90½ Ã\91â\80\9aÃ\90¾Ã\91â\82¬Ã\91Å\92Ã\91� Ã\90²Ã\90¸Ã\90´. Ã\90�Ã\91Å\92Ã\91â\80¹Ã\90²Ã\90¿Ã\91Æ\92Ã\91â\80¹Ã\91� Ã\90±Ã\91â\80¹Ã\90´Ã\90¼Ã\93§ 14ââ\82¬â\80\9c20 Ã\90¼Ã\90µÃ\91â\80\9aÃ\91â\82¬Ã\90° Ã\90²Ã\91â\80¹Ã\90»Ã\91â\80¹Ã\90½Ã\90° Ã\90´Ã\90° Ã\90¾Ã\90²Ã\90»Ã\93§ 10ââ\82¬â\80\9c60 Ã\91�Ã\90¼ Ã\90ºÃ\91â\80¹Ã\90·Ã\90° Ã\90´Ã\90¸Ã\90°Ã\90¼Ã\90µÃ\91â\80\9aÃ\91â\82¬Ã\91â\80¹Ã\90½. Ã\90�Ã\91Å\92Ã\91â\80¹Ã\90²Ã\90¿Ã\91Æ\92 Ã\90¿Ã\90°Ã\90½Ã\91â\80\9aÃ\90°Ã\91�Ã\91Å\92Ã\93§ Ã\90žÃ\90¹Ã\90²Ã\91â\80¹Ã\90² Ã\90�Ã\90¼Ã\90µÃ\91â\82¬Ã\90¸Ã\90ºÃ\90°Ã\91â\80¹Ã\90½.",\r
Language.RUSSIAN(), null));\r
setComplete();\r
endTransaction();\r
import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
\r
@Ignore //FIXME tests are failing\r
--@SpringApplicationContext("file:./target/test-classes/eu/etaxonomy/cdm/applicationContext-testSecurity.xml")\r
++@SpringApplicationContext("file:./target/test-classes/eu/etaxonomy/cdm/applicationContext-securityTest.xml")\r
public class UserServiceImplTest extends CdmIntegrationTest {\r
\r
protected static final Logger logger = Logger.getLogger(UserServiceImplTest.class);\r
import static org.junit.Assert.assertEquals;\r
import static org.junit.Assert.assertNotNull;\r
\r
++import java.util.List;\r
++\r
import org.junit.Before;\r
import org.junit.Test;\r
import org.unitils.dbunit.annotation.DataSet;\r
import org.unitils.spring.annotation.SpringBeanByType;\r
\r
++import eu.etaxonomy.cdm.api.service.INameService;\r
import eu.etaxonomy.cdm.api.service.lsid.impl.LsidRegistryImpl;\r
import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;\r
import eu.etaxonomy.cdm.model.common.LSID;\r
++import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
++import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
\r
@DataSet("LSIDAuthorityServiceTest.testGetAvailableServices.xml")\r
--public class LSIDMetadataServiceTest extends CdmIntegrationTest {\r
++public class LSIDMetadataServiceTest extends CdmTransactionalIntegrationTest {\r
\r
@SpringBeanByType\r
private LSIDMetadataService lsidMetadataService;\r
@SpringBeanByType\r
private LSIDRegistry lsidRegistry;\r
\r
++ @SpringBeanByType\r
++ private INameService nameService;\r
++ \r
private LSID lsid;\r
\r
@Before \r
public void setUp() throws Exception {\r
++ \r
lsid = new LSID("example.org", "taxonconcepts", "1", null);\r
((LsidRegistryImpl)lsidRegistry).init();\r
}\r
* @version 1.0
*/
public class FixMultipleTextDataInImageGalleries {
-- public static final Logger logger = Logger
-- .getLogger(FixMultipleTextDataInImageGalleries.class);
++ public static final Logger logger = Logger.getLogger(FixMultipleTextDataInImageGalleries.class);
public static ICdmDataSource dataSource(){
DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
\r
import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
import eu.etaxonomy.cdm.api.application.CdmApplicationUtils;\r
++import eu.etaxonomy.cdm.common.AccountStore;\r
import eu.etaxonomy.cdm.database.CdmDataSource;\r
import eu.etaxonomy.cdm.database.CdmPersistentDataSource;\r
import eu.etaxonomy.cdm.database.DataSourceNotFoundException;\r
private void testNewConfigControler(){\r
List<CdmPersistentDataSource> lsDataSources = CdmPersistentDataSource.getAllDataSources();\r
System.out.println(lsDataSources);\r
-- CdmPersistentDataSource dataSource = lsDataSources.get(0);\r
-- DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;\r
--// ICdmDataSource dataSource = CdmDataSource.NewInstance(dbType, "192.168.2.10", "cdm_test_andreas", dbType.getDefaultPort() + "", "edit", "", null, null);\r
-- CdmPersistentDataSource.save(dataSource.getName(), dataSource);\r
++// CdmPersistentDataSource dataSource = lsDataSources.get(0);\r
++// DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;\r
++ String server = "localhost";\r
++ String database = "cdm_test";\r
++ String username = "edit";\r
++ ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));\r
++// CdmPersistentDataSource.save(dataSource.getName(), dataSource);\r
CdmApplicationController appCtr;\r
-- appCtr = CdmApplicationController.NewInstance(dataSource);\r
++ appCtr = CdmApplicationController.NewInstance(dataSource, DbSchemaValidation.CREATE);\r
appCtr.close();\r
}\r
\r
\r
private void test(){\r
System.out.println("Start Datasource");\r
-- //testNewConfigControler();\r
++ testNewConfigControler();\r
//testDatabaseChange();\r
\r
//testSqlServer();\r
//testLocalHsql();\r
//testLocalH2();\r
//testWritableResourceDirectory();\r
-- testH2();\r
++// testH2();\r
System.out.println("\nEnd Datasource");\r
}\r
\r
*/
@Ignore /* IGNORE in Suite */
public class TestC3P0Configuration{
-- private static final Logger logger = Logger
-- .getLogger(TestC3P0Configuration.class);
++ private static final Logger logger = Logger.getLogger(TestC3P0Configuration.class);
CdmApplicationController appController;
import java.util.Set;\r
import java.util.UUID;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.hibernate.mapping.Column;\r
*/\r
@Ignore\r
public class TestDatabase {\r
++ @SuppressWarnings("unused")\r
private static final Logger logger = Logger.getLogger(TestDatabase.class);\r
-- ReferenceFactory refFactory;\r
++\r
private void test(){\r
System.out.println("Start TestDatabase");\r
//testNewDatabaseConnection();\r
BotanicalName botanicalName = BotanicalName.NewInstance(genus);\r
botanicalName.setGenusOrUninomial("GenusName");\r
\r
-- IJournal journal = refFactory.newJournal();\r
++ IJournal journal = ReferenceFactory.newJournal();\r
journal.setTitleCache("Afro+Doc", true);\r
\r
// Taxon taxon = Taxon.NewInstance(botanicalName, journal);\r
BotanicalName botanicalName = BotanicalName.NewInstance(genus);\r
botanicalName.setGenusOrUninomial("GenusName");\r
\r
-- IJournal journal = refFactory.newJournal();\r
++ IJournal journal = ReferenceFactory.newJournal();\r
journal.setTitleCache("Afro+Doc", true);\r
\r
Taxon taxon = Taxon.NewInstance(botanicalName,(Reference)journal);\r
BotanicalName botanicalName = BotanicalName.NewInstance(genus);\r
botanicalName.setGenusOrUninomial("GenusName");\r
\r
-- IJournal journal = refFactory.newJournal();\r
++ IJournal journal = ReferenceFactory.newJournal();\r
journal.setTitle("JournalTitel");\r
\r
// Taxon taxon = Taxon.NewInstance(botanicalName, journal);\r
//ICdmDataSource datasource = CdmDataSource.NewH2EmbeddedInstance("CDM", "sa", "");\r
ICdmDataSource datasource = cdm_test_anahit2();\r
CdmApplicationController appCtr = CdmApplicationController.NewInstance(datasource, dbSchemaValidation);\r
-- AgentBase person = Person.NewTitledInstance("TestPerson");\r
++ Person person = Person.NewTitledInstance("TestPerson");\r
Contact contact1 = new Contact();\r
Set<String> set = new HashSet<String>();\r
set.add("email1");\r
// if you are willing to blame it on conversations, please rewrite into two methods\r
// the result will be the same\r
ConversationHolder newConversation = appCtr.NewConversation();\r
-- DescriptionBase loadedDescription = appCtr.getDescriptionService().load(taxonDescriptionUuid);\r
++ DescriptionBase<?> loadedDescription = appCtr.getDescriptionService().load(taxonDescriptionUuid);\r
\r
TextData descriptionElement = (TextData) loadedDescription.getElements().iterator().next();\r
\r
import javax.validation.ValidatorFactory;\r
import javax.validation.groups.Default;\r
\r
--import junit.framework.Assert;\r
++import org.junit.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.Before;\r
\r
#hibernate.connection.password=\r
#hibernate.hbm2ddl.auto=create-drop\r
--#hibernate.cache.provider_class=net.sf.ehcache.hibernate.SingletonEhCacheProvider\r
--#hibernate.cache.provider_class=org.hibernate.cache.NoCacheProvider\r
--#hibernate.search.default.directory_provider=org.hibernate.search.store.FSDirectoryProvider\r
++#hibernate.cache.region.factory_class=net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory\r
++#hibernate.cache.region.factory_class=org.hibernate.cache.internal.NoCachingRegionFactory\r
++#hibernate.search.default.directory_provider=org.hibernate.search.store.impl.FSDirectoryProvider\r
#hibernate.search.default.indexBase=./target/test-classes\r
<HOMOTYPICALGROUP ID="4" CREATED="2008-12-10 09:56:07.0" UUID="3c6ff240-9cab-4ec9-b47e-97280318ab30" UPDATED="2008-12-10 09:56:07.253"/>\r
<HOMOTYPICALGROUP ID="5" CREATED="2008-12-10 09:56:07.0" UUID="5cd73df5-1c72-44a6-9864-adb145d8bd56" UPDATED="2008-12-10 09:56:07.253"/>\r
<HOMOTYPICALGROUP ID="6" CREATED="2008-12-10 09:56:07.0" UUID="335977f0-ef55-4294-b78b-aed47435b428" UPDATED="2008-12-10 09:56:07.253"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2009-02-03 17:52:26.0" UUID="88fab5b3-0d9a-42c3-9915-71fc17266116" TITLECACHE="" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="[null]" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="[null]" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="[null]" COMBINATIONAUTHORTEAM_ID="[null]"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" CREATED="2009-02-03 17:52:26.0" UUID="984e4304-57b0-4ce8-8f94-7c39be7396d9" TITLECACHE="Abies" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="[null]" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="773" COMBINATIONAUTHORTEAM_ID="[null]"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="3" CREATED="2009-02-03 17:52:26.0" UUID="a7e666e7-0d96-4284-9cc4-8e5ccc3b9a36" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="alba" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="3" RANK_ID="765" COMBINATIONAUTHORTEAM_ID="[null]"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="5" CREATED="2009-02-03 17:52:26.0" UUID="5d74500b-9fd5-4d18-b9cd-cc1c8a372fec" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Some" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="strangetitle" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="5" RANK_ID="765" COMBINATIONAUTHORTEAM_ID="1"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="6" CREATED="2009-02-03 17:52:26.0" UUID="55e6ee55-371e-418e-8775-d885d28453c4" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="alba" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="6" RANK_ID="765" COMBINATIONAUTHORTEAM_ID="2"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2009-02-03 17:52:26.0" UUID="88fab5b3-0d9a-42c3-9915-71fc17266116" TITLECACHE="" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="[null]" GENUSORUNINOMIAL="[null]" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="[null]" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="[null]" COMBINATIONAUTHORTEAM_ID="[null]"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" CREATED="2009-02-03 17:52:26.0" UUID="984e4304-57b0-4ce8-8f94-7c39be7396d9" TITLECACHE="Abies" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="[null]" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="[null]" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="773" COMBINATIONAUTHORTEAM_ID="[null]"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="3" CREATED="2009-02-03 17:52:26.0" UUID="a7e666e7-0d96-4284-9cc4-8e5ccc3b9a36" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="[null]" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="alba" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="3" RANK_ID="765" COMBINATIONAUTHORTEAM_ID="[null]"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="5" CREATED="2009-02-03 17:52:26.0" UUID="5d74500b-9fd5-4d18-b9cd-cc1c8a372fec" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="[null]" GENUSORUNINOMIAL="Some" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="strangetitle" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="5" RANK_ID="765" COMBINATIONAUTHORTEAM_ID="1"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="6" CREATED="2009-02-03 17:52:26.0" UUID="55e6ee55-371e-418e-8775-d885d28453c4" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="[null]" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="alba" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="6" RANK_ID="765" COMBINATIONAUTHORTEAM_ID="2"/>\r
<TAXONBASE DTYPE="Taxon" ID="4" CREATED="2009-02-03 17:52:26.0" UUID="aafce7fe-0c5f-42ed-814b-4c7c2c715660" TITLECACHE="Abies sec. ???" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="4"/>\r
<TAXONBASE DTYPE="Taxon" ID="5" CREATED="2009-02-03 17:52:26.0" UUID="5c1a3d10-3a32-45d1-a5ae-1e982533b79f" TITLECACHE="Abies alba sec. ???" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="5"/>\r
<TAXONBASE DTYPE="Synonym" ID="6" CREATED="2009-02-03 17:52:26.0" UUID="4de9d002-d68c-49af-84f1-7f9eddaa1226" TITLECACHE="Abies alba sec. ???" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="[null]" TAXONOMICCHILDRENCOUNT="[null]" NAME_ID="6"/>\r
<TAXONBASE DTYPE="Synonym" ID="3" NAME_ID="3" UUID="3034249e-9491-4439-bcb6-9c7d68e29bce" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" EXCLUDED="[null]" TAXONSTATUSUNKNOWN="[null]" UNPLACED="[null]" TAXONOMICCHILDRENCOUNT="[null]"/>
<TAXONBASE DTYPE="Synonym" ID="4" NAME_ID="4" UUID="ac6c5bb1-d36d-4068-af7c-4f0bb009880d" PROTECTEDTITLECACHE="false" DOUBTFUL="false" USENAMECACHE="false" EXCLUDED="[null]" TAXONSTATUSUNKNOWN="[null]" UNPLACED="[null]" TAXONOMICCHILDRENCOUNT="[null]"/>
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" UUID="54a1d7f9-79ab-4fb3-bff5-152e1046cf75" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" HOMOTYPICALGROUP_ID="1" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" HYBRIDFORMULA="false" MONOMHYBRID="false" BINOMHYBRID="false" TRINOMHYBRID="false" ANAMORPHIC="false"/>
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" UUID="e7f50b04-9648-479b-bc8a-ffebf295dce9" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" HOMOTYPICALGROUP_ID="2" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" HYBRIDFORMULA="false" MONOMHYBRID="false" BINOMHYBRID="false" TRINOMHYBRID="false" ANAMORPHIC="false"/>
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="3" UUID="c0439dd6-8d2b-4428-86f4-37f4a90d4583" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" HOMOTYPICALGROUP_ID="3" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" HYBRIDFORMULA="false" MONOMHYBRID="false" BINOMHYBRID="false" TRINOMHYBRID="false" ANAMORPHIC="false"/>
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="4" UUID="6a5774bd-c8aa-42dc-91dd-d62d27e7ea2a" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" HOMOTYPICALGROUP_ID="4" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" HYBRIDFORMULA="false" MONOMHYBRID="false" BINOMHYBRID="false" TRINOMHYBRID="false" ANAMORPHIC="false"/>
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" UUID="54a1d7f9-79ab-4fb3-bff5-152e1046cf75" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" HOMOTYPICALGROUP_ID="1" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" HYBRIDFORMULA="false" MONOMHYBRID="false" BINOMHYBRID="false" TRINOMHYBRID="false" ANAMORPHIC="false" RANK_ID="765"/>
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" UUID="e7f50b04-9648-479b-bc8a-ffebf295dce9" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" HOMOTYPICALGROUP_ID="2" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" HYBRIDFORMULA="false" MONOMHYBRID="false" BINOMHYBRID="false" TRINOMHYBRID="false" ANAMORPHIC="false" RANK_ID="765"/>
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="3" UUID="c0439dd6-8d2b-4428-86f4-37f4a90d4583" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" HOMOTYPICALGROUP_ID="3" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" HYBRIDFORMULA="false" MONOMHYBRID="false" BINOMHYBRID="false" TRINOMHYBRID="false" ANAMORPHIC="false" RANK_ID="765"/>
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="4" UUID="6a5774bd-c8aa-42dc-91dd-d62d27e7ea2a" PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" HOMOTYPICALGROUP_ID="4" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" HYBRIDFORMULA="false" MONOMHYBRID="false" BINOMHYBRID="false" TRINOMHYBRID="false" ANAMORPHIC="false" RANK_ID="765"/>
<HOMOTYPICALGROUP ID="1" CREATED="2011-10-12 19:57:31.0" UUID="d8652fa0-eff9-460d-8990-aed0ebf1322e"/>
<HOMOTYPICALGROUP ID="2" CREATED="2011-10-12 19:57:31.0" UUID="2a1b0776-b4b5-462a-9be7-f88378ebd732"/>
<HOMOTYPICALGROUP ID="3" CREATED="2011-10-12 19:57:31.0" UUID="3ac4e376-31cd-47fd-9dd6-eaff415ff0e7"/>
<TAXONBASE DTYPE="Synonym" ID="7" CREATED="2011-10-12 19:57:31.0" UUID="fcc0bcf8-8bac-43bd-9508-1e97821587dd" PROTECTEDTITLECACHE="false" TITLECACHE="Heterotypic synonym5 sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="[null]" UNPLACED="[null]" EXCLUDED="[null]" TAXONOMICCHILDRENCOUNT="[null]" NAME_ID="7"/>\r
<TAXONBASE DTYPE="Synonym" ID="8" CREATED="2011-10-12 19:57:31.0" UUID="0ccd4e7c-6fbd-4b7c-bd47-29e45b92f34b" PROTECTEDTITLECACHE="false" TITLECACHE="Heterotypic synonym6 sec. ???" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="[null]" UNPLACED="[null]" EXCLUDED="[null]" TAXONOMICCHILDRENCOUNT="[null]" NAME_ID="8"/>\r
\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2011-10-12 19:57:31.0" UUID="3f3c5808-de2b-44cc-b738-6ebaf8f32377" PROTECTEDTITLECACHE="true" TITLECACHE="Old Taxon" FULLTITLECACHE="TaxonName1" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="1" RANK_ID="765"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" CREATED="2011-10-12 19:57:31.0" UUID="1b2aa952-41de-4249-8345-dccc32ee7cf9" PROTECTEDTITLECACHE="true" TITLECACHE="New Taxon" FULLTITLECACHE="TaxonName2" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="2" RANK_ID="765"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="3" CREATED="2011-10-12 19:57:31.0" UUID="9e9a3cad-3888-46ab-bb26-f06ddfd21e0c" PROTECTEDTITLECACHE="true" TITLECACHE="Homotypic synonym1" FULLTITLECACHE="Synonym1" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="1" RANK_ID="765"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="4" CREATED="2011-10-12 19:57:31.0" UUID="613f3c93-013e-4ffc-aadc-1c98d71c335e" PROTECTEDTITLECACHE="true" TITLECACHE="Homotypic synonym2" FULLTITLECACHE="Synonym2" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="1" RANK_ID="765"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="5" CREATED="2011-10-12 19:57:31.0" UUID="6c3e0021-2b9b-461a-a017-189a86a13606" PROTECTEDTITLECACHE="true" TITLECACHE="Heterotypic synonym3" FULLTITLECACHE="Synonym3" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="3" RANK_ID="765"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="6" CREATED="2011-10-12 19:57:31.0" UUID="242dcacb-f0d5-4ad8-9ead-2d3bb535462c" PROTECTEDTITLECACHE="true" TITLECACHE="Heterotypic synonym4" FULLTITLECACHE="Synonym4" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="3" RANK_ID="765"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="7" CREATED="2011-10-12 19:57:31.0" UUID="9744106c-9845-4e9f-a077-6dffef3b857a" PROTECTEDTITLECACHE="true" TITLECACHE="Heterotypic synonym5" FULLTITLECACHE="Synonym5" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="4" RANK_ID="765"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="8" CREATED="2011-10-12 19:57:31.0" UUID="2ca9f4a2-05ae-49f9-91ff-c0e611f1eff2" PROTECTEDTITLECACHE="true" TITLECACHE="Heterotypic synonym6" FULLTITLECACHE="Synonym6" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="5" RANK_ID="765"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2011-10-12 19:57:31.0" UUID="3f3c5808-de2b-44cc-b738-6ebaf8f32377" PROTECTEDTITLECACHE="true" TITLECACHE="Old Taxon" FULLTITLECACHE="TaxonName1" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="[null]" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="1" RANK_ID="765"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" CREATED="2011-10-12 19:57:31.0" UUID="1b2aa952-41de-4249-8345-dccc32ee7cf9" PROTECTEDTITLECACHE="true" TITLECACHE="New Taxon" FULLTITLECACHE="TaxonName2" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="[null]" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="2" RANK_ID="765"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="3" CREATED="2011-10-12 19:57:31.0" UUID="9e9a3cad-3888-46ab-bb26-f06ddfd21e0c" PROTECTEDTITLECACHE="true" TITLECACHE="Homotypic synonym1" FULLTITLECACHE="Synonym1" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="[null]" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="1" RANK_ID="765"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="4" CREATED="2011-10-12 19:57:31.0" UUID="613f3c93-013e-4ffc-aadc-1c98d71c335e" PROTECTEDTITLECACHE="true" TITLECACHE="Homotypic synonym2" FULLTITLECACHE="Synonym2" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="[null]" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="1" RANK_ID="765"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="5" CREATED="2011-10-12 19:57:31.0" UUID="6c3e0021-2b9b-461a-a017-189a86a13606" PROTECTEDTITLECACHE="true" TITLECACHE="Heterotypic synonym3" FULLTITLECACHE="Synonym3" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="[null]" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="3" RANK_ID="765"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="6" CREATED="2011-10-12 19:57:31.0" UUID="242dcacb-f0d5-4ad8-9ead-2d3bb535462c" PROTECTEDTITLECACHE="true" TITLECACHE="Heterotypic synonym4" FULLTITLECACHE="Synonym4" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="[null]" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="3" RANK_ID="765"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="7" CREATED="2011-10-12 19:57:31.0" UUID="9744106c-9845-4e9f-a077-6dffef3b857a" PROTECTEDTITLECACHE="true" TITLECACHE="Heterotypic synonym5" FULLTITLECACHE="Synonym5" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="[null]" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="4" RANK_ID="765"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="8" CREATED="2011-10-12 19:57:31.0" UUID="2ca9f4a2-05ae-49f9-91ff-c0e611f1eff2" PROTECTEDTITLECACHE="true" TITLECACHE="Heterotypic synonym6" FULLTITLECACHE="Synonym6" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="[null]" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="5" RANK_ID="765"/>\r
\r
<SYNONYMRELATIONSHIP ID="1" CREATED="2011-10-12 19:57:31.0" UUID="980fb6a3-04f0-4f58-b69d-5d8838ed6022" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="3" RELATEDTO_ID="1" TYPE_ID="847" CITATIONMICROREFERENCE="rel1" CITATION_ID="1"/>\r
<SYNONYMRELATIONSHIP ID="2" CREATED="2011-10-12 19:57:31.0" UUID="347c620e-10e5-46de-a47d-0ce26492fe90" DOUBTFUL="false" PARTIAL="false" PROPARTE="true" RELATEDFROM_ID="4" RELATEDTO_ID="1" TYPE_ID="847" CITATIONMICROREFERENCE="rel2" CITATION_ID="1"/>\r
<TAXONBASE_AUD DTYPE="Taxon" ID="3" REV="1001" REVTYPE="0" CREATED="2011-10-12 19:57:31.0" UUID="2d9a642d-5a82-442d-8fec-95efa978e8f8" PROTECTEDTITLECACHE="false" TITLECACHE="TaxonName2 sec. ???" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="3" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0"/>\r
<TAXONBASE_AUD DTYPE="Synonym" ID="4" REV="1001" REVTYPE="0" CREATED="2011-10-12 19:57:31.0" UUID="f8d86dc9-5f18-4877-be46-fbb9412465e4" PROTECTEDTITLECACHE="false" TITLECACHE="Synonym2 sec. ???" DOUBTFUL="false" USENAMECACHE="false" NAME_ID="4" TAXONSTATUSUNKNOWN="[null]" UNPLACED="[null]" EXCLUDED="[null]" TAXONOMICCHILDRENCOUNT="[null]"/>\r
\r
-- <TAXONNAMEBASE_AUD DTYPE="BotanicalName" ID="1" REV="1001" REVTYPE="0" CREATED="2011-10-12 19:57:31.0" UUID="3f3c5808-de2b-44cc-b738-6ebaf8f32377" PROTECTEDTITLECACHE="true" TITLECACHE="TaxonName1" FULLTITLECACHE="TaxonName1" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" HOMOTYPICALGROUP_ID="1" RANK_ID="765" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false"/>\r
-- <TAXONNAMEBASE_AUD DTYPE="BotanicalName" ID="2" REV="1001" REVTYPE="0" CREATED="2011-10-12 19:57:31.0" UUID="9e9a3cad-3888-46ab-bb26-f06ddfd21e0c" PROTECTEDTITLECACHE="true" TITLECACHE="Synonym1" FULLTITLECACHE="Synonym1" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" HOMOTYPICALGROUP_ID="2" RANK_ID="765" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false"/>\r
-- <TAXONNAMEBASE_AUD DTYPE="BotanicalName" ID="3" REV="1001" REVTYPE="0" CREATED="2011-10-12 19:57:31.0" UUID="1b2aa952-41de-4249-8345-dccc32ee7cf9" PROTECTEDTITLECACHE="true" TITLECACHE="TaxonName2" FULLTITLECACHE="TaxonName2" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" HOMOTYPICALGROUP_ID="3" RANK_ID="765" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false"/>\r
-- <TAXONNAMEBASE_AUD DTYPE="BotanicalName" ID="4" REV="1001" REVTYPE="0" CREATED="2011-10-12 19:57:31.0" UUID="613f3c93-013e-4ffc-aadc-1c98d71c335e" PROTECTEDTITLECACHE="true" TITLECACHE="Synonym2" FULLTITLECACHE="Synonym2" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" HOMOTYPICALGROUP_ID="4" RANK_ID="765" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false"/>\r
++ <TAXONNAMEBASE_AUD DTYPE="BotanicalName" ID="1" REV="1001" REVTYPE="0" CREATED="2011-10-12 19:57:31.0" UUID="3f3c5808-de2b-44cc-b738-6ebaf8f32377" PROTECTEDTITLECACHE="true" TITLECACHE="TaxonName1" FULLTITLECACHE="TaxonName1" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" HOMOTYPICALGROUP_ID="1" RANK_ID="765" AUTHORSHIPCACHE="[null]" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false"/>\r
++ <TAXONNAMEBASE_AUD DTYPE="BotanicalName" ID="2" REV="1001" REVTYPE="0" CREATED="2011-10-12 19:57:31.0" UUID="9e9a3cad-3888-46ab-bb26-f06ddfd21e0c" PROTECTEDTITLECACHE="true" TITLECACHE="Synonym1" FULLTITLECACHE="Synonym1" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" HOMOTYPICALGROUP_ID="2" RANK_ID="765" AUTHORSHIPCACHE="[null]" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false"/>\r
++ <TAXONNAMEBASE_AUD DTYPE="BotanicalName" ID="3" REV="1001" REVTYPE="0" CREATED="2011-10-12 19:57:31.0" UUID="1b2aa952-41de-4249-8345-dccc32ee7cf9" PROTECTEDTITLECACHE="true" TITLECACHE="TaxonName2" FULLTITLECACHE="TaxonName2" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" HOMOTYPICALGROUP_ID="3" RANK_ID="765" AUTHORSHIPCACHE="[null]" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false"/>\r
++ <TAXONNAMEBASE_AUD DTYPE="BotanicalName" ID="4" REV="1001" REVTYPE="0" CREATED="2011-10-12 19:57:31.0" UUID="613f3c93-013e-4ffc-aadc-1c98d71c335e" PROTECTEDTITLECACHE="true" TITLECACHE="Synonym2" FULLTITLECACHE="Synonym2" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" HOMOTYPICALGROUP_ID="4" RANK_ID="765" AUTHORSHIPCACHE="[null]" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false"/>\r
\r
<SYNONYMRELATIONSHIP_AUD ID="1" REV="1001" REVTYPE="0" CREATED="2011-10-12 19:57:31.0" UUID="980fb6a3-04f0-4f58-b69d-5d8838ed6022" DOUBTFUL="false" PARTIAL="false" PROPARTE="false" RELATEDFROM_ID="2" RELATEDTO_ID="1" TYPE_ID="846"/>\r
<SYNONYMRELATIONSHIP_AUD ID="2" REV="1001" REVTYPE="0" CREATED="2011-10-12 19:57:31.0" UUID="347c620e-10e5-46de-a47d-0ce26492fe90" DOUBTFUL="false" PARTIAL="false" PROPARTE="true" RELATEDFROM_ID="2" RELATEDTO_ID="3" TYPE_ID="846"/>\r
<PERMISSIONGROUP_GRANTEDAUTHORITYIMPL PERMISSIONGROUP_ID="1" GRANTEDAUTHORITIES_ID="4"/>\r
<PERMISSIONGROUP_GRANTEDAUTHORITYIMPL PERMISSIONGROUP_ID="2" GRANTEDAUTHORITIES_ID="1"/>\r
<PERMISSIONGROUP_GRANTEDAUTHORITYIMPL PERMISSIONGROUP_ID="2" GRANTEDAUTHORITIES_ID="6"/>\r
-- <GRANTEDAUTHORITYIMPL ID="1" UUIDUUID="441a3c40-0c84-11de-8c30-0800200c9a66" CREATED="2009-02-03 17:52:26.0" AUTHORITY="USER.READ"/>\r
++ <GRANTEDAUTHORITYIMPL ID="1" UUID="441a3c40-0c84-11de-8c30-0800200c9a66" CREATED="2009-02-03 17:52:26.0" AUTHORITY="USER.READ"/>\r
<GRANTEDAUTHORITYIMPL ID="2" UUID="14788361-1a7e-4eed-b22f-fd90a0b424ac" CREATED="2009-02-03 17:52:26.0" AUTHORITY="USER.UPDATE"/>\r
<GRANTEDAUTHORITYIMPL ID="3" UUID="fa56073c-0ffd-4384-b459-b2f07e35b689" CREATED="2009-02-03 17:52:26.0" AUTHORITY="USER.CREATE"/>\r
<GRANTEDAUTHORITYIMPL ID="4" UUID="e5354c0e-657b-4b4d-bb2f-791612199711" CREATED="2009-02-03 17:52:26.0" AUTHORITY="USER.DELETE"/>\r
<TAXONBASE DTYPE="Taxon" ID="5" CREATED="2009-02-03 17:52:26.0" LSID_LSID="[null]" LSID_AUTHORITY="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" UUID="5c1a3d10-3a32-45d1-a5ae-1e982533b79f" TITLECACHE="Abies alba sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" UNPLACED="false" EXCLUDED="false" TAXONOMICCHILDRENCOUNT="0" NAME_ID="5"/>\r
<TAXONBASE DTYPE="Synonym" ID="6" CREATED="2009-02-03 17:52:26.0" LSID_LSID="[null]" LSID_AUTHORITY="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" UUID="4de9d002-d68c-49af-84f1-7f9eddaa1226" TITLECACHE="Abies alba sec. ???" PROTECTEDTITLECACHE="true" DOUBTFUL="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="[null]" UNPLACED="[null]" EXCLUDED="[null]" TAXONOMICCHILDRENCOUNT="[null]" NAME_ID="6"/>\r
\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2009-02-03 17:52:26.0" UUID="88fab5b3-0d9a-42c3-9915-71fc17266116" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" CREATED="2009-02-03 17:52:26.0" UUID="984e4304-57b0-4ce8-8f94-7c39be7396d9" TITLECACHE="Abies" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="Abies" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="774"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="3" CREATED="2009-02-03 17:52:26.0" UUID="a7e666e7-0d96-4284-9cc4-8e5ccc3b9a36" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="alba" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="3" RANK_ID="765"/>\r
-- <TAXONNAMEBASE DTYPE="BotanicalName" ID="4" CREATED="2009-02-03 17:52:26.0" UUID="ebd459a6-52ec-4f7c-a520-32c82aa31011" TITLECACHE="Abies" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="Abies" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="4" RANK_ID="774" COMBINATIONAUTHORTEAM_ID="1"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="1" CREATED="2009-02-03 17:52:26.0" UUID="88fab5b3-0d9a-42c3-9915-71fc17266116" TITLECACHE="" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="1" RANK_ID="765"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="2" CREATED="2009-02-03 17:52:26.0" UUID="984e4304-57b0-4ce8-8f94-7c39be7396d9" TITLECACHE="Abies" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="Abies" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="2" RANK_ID="774"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="3" CREATED="2009-02-03 17:52:26.0" UUID="a7e666e7-0d96-4284-9cc4-8e5ccc3b9a36" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="alba" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="3" RANK_ID="765"/>\r
++ <TAXONNAMEBASE DTYPE="BotanicalName" ID="4" CREATED="2009-02-03 17:52:26.0" UUID="ebd459a6-52ec-4f7c-a520-32c82aa31011" TITLECACHE="Abies" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="Abies" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="[null]" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="4" RANK_ID="774" COMBINATIONAUTHORTEAM_ID="1"/>\r
<TAXONNAMEBASE DTYPE="BotanicalName" ID="5" CREATED="2009-02-03 17:52:26.0" UUID="5d74500b-9fd5-4d18-b9cd-cc1c8a372fec" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="alba" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="5" RANK_ID="765" COMBINATIONAUTHORTEAM_ID="1"/>\r
<TAXONNAMEBASE DTYPE="BotanicalName" ID="6" CREATED="2009-02-03 17:52:26.0" UUID="55e6ee55-371e-418e-8775-d885d28453c4" TITLECACHE="Abies alba" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="Abies alba" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" GENUSORUNINOMIAL="Abies" NAMECACHE="Abies alba" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="alba" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" HOMOTYPICALGROUP_ID="6" RANK_ID="765" COMBINATIONAUTHORTEAM_ID="2"/>\r
</dataset>\r
class="org.springframework.beans.factory.config.PropertiesFactoryBean">\r
<property name="properties">\r
<props>\r
-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>\r
++ <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</prop>\r
<prop key="hibernate.show_sql">false</prop>\r
<prop key="hibernate.format_sql">false</prop>\r
-- <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</prop>\r
++ <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.impl.FSDirectoryProvider</prop>\r
<!-- TODO trying to use a managed session context\r
<prop key="hibernate.current_session_context_class">managed</prop>\r
-->\r
++ \r
++<!-- temp for h4 migration testing -->\r
++<!-- <prop key="hibernate.connection.driver_class">org.h2.Driver</prop> -->\r
++<!-- <prop key="hibernate.connection.url">jdbc:h2:mem:cdm</prop> -->\r
++<!-- <prop key="hibernate.connection.username">sa</prop> -->\r
++<!-- <prop key="hibernate.connection.password"></prop> -->\r
++<!-- <prop key="hibernate.search.lucene_version">LUCENE_36</prop> -->\r
++<!-- end temp for h4 migration testing -->\r
++ \r
<prop key="hibernate.search.default.indexBase">./target/index</prop>\r
<!-- hsqldb v. <1.9 has a bug (http://sourceforge.net/tracker/?func=detail&atid=378131&aid=1407528&group_id=23316)\r
due to which it is not possible to use batch updates, so we need to disable\r
</bean>\r
\r
\r
++<!--\r
++ We do not use spelling suggestions anymore. This one relates to springmodules which is\r
++ somewhat outdated. Once we work again with spelling suggestions we better use a modern\r
++ approache, e.g. annotation based.\r
<bean id="taxonSpellingDirectory" class="org.springmodules.lucene.index.support.FSDirectoryFactoryBean">\r
<property name="location" value="file:./target/index/eu.etaxonomy.cdm.model.taxon.TaxonBase_spelling"/>\r
<property name="create" value="true"/>\r
-- </bean>\r
++ </bean> -->\r
\r
<bean id="validatorFactory" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">\r
<property name="mappingLocations">\r
<tx:annotation-driven transaction-manager="transactionManager"/>\r
\r
<bean id="transactionManager"\r
-- class="org.springframework.orm.hibernate3.HibernateTransactionManager">\r
++ class="org.springframework.orm.hibernate4.HibernateTransactionManager">\r
<property name="sessionFactory" ref="sessionFactory"/>\r
</bean>\r
\r
-- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">\r
++ <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">\r
<property name="namingStrategy">\r
<bean class="org.hibernate.cfg.DefaultComponentSafeNamingStrategy" />\r
</property>\r
<property name="properties">\r
<props>\r
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLCorrectedDialect</prop>\r
-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>\r
++ <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.internal.NoCachingRegionFactory</prop>\r
<!-- TODO trying to use a managed session context -->\r
<!-- <prop key="hibernate.current_session_context_class">managed</prop>-->\r
<prop key="hibernate.show_sql">false</prop>\r
<prop key="hibernate.format_sql">false</prop>\r
-- <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</prop>\r
++ <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.impl.FSDirectoryProvider</prop>\r
<prop key="hibernate.search.default.indexBase">./target/test-classes</prop>\r
</props>\r
</property>\r
### avoid warnings about inappropriate Annotations ###
# TODO remove the below two line after updating to hibernate 4.x
--log4j.logger.org.hibernate.search.engine.DocumentBuilderContainedEntity=error
--log4j.logger.org.hibernate.search.impl.SearchFactoryImpl=error
++#log4j.logger.org.hibernate.search.engine.DocumentBuilderContainedEntity=error
++#log4j.logger.org.hibernate.search.impl.SearchFactoryImpl=error
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
<java.codelevel>1.6</java.codelevel>
<spring.version>3.2.1.RELEASE</spring.version>
<spring-security.version>3.0.7.RELEASE</spring-security.version>
-- <hibernate.version>3.4.0-SNAPSHOT</hibernate.version>
++ <hibernate.version>4.1.9.Final</hibernate.version>
++<!-- <hibernate.version>3.4.0-SNAPSHOT</hibernate.version> -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<unitils.version>3.3</unitils.version>
-- <lucene.version>2.9.4</lucene.version><!-- lucene.version in hibernate-search 3.4.0-SNAPSHOT is 2.4.0-->
++ <!-- OLD: <lucene.version>2.9.4</lucene.version> --><!-- lucene.version in hibernate-search 3.4.0-SNAPSHOT is 2.4.0-->
++ <lucene.version>3.6.2</lucene.version><!-- lucene.version in hibernate-search 3.4.0-SNAPSHOT is 2.4.0-->
++
++
<hsqldb.version>1.8.0.10</hsqldb.version><!-- 1.8.0.10, 1.9.0-rc6 (manualy build only for debugging) -->
<httpcomponents.version>4.2.3</httpcomponents.version>
</properties>
<artifactId>jaxb-xjc</artifactId>
<version>2.1.6</version>
</dependency>
-- <!-- ******* hibernate 3.4 uses slf4j ******* -->
++ <!-- ******* hibernate uses slf4j ******* -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<artifactId>unitils-orm</artifactId>
<version>${unitils.version}</version>
<scope>test</scope>
-- <exclusions>
-- <exclusion>
-- <groupId>org.springframework</groupId>
-- <artifactId>spring-context</artifactId>
-- </exclusion>
-- <exclusion>
-- <groupId>org.springframework</groupId>
-- <artifactId>spring-orm</artifactId>
-- </exclusion>
-- </exclusions>
-- </dependency>
-- <dependency>
-- <groupId>org.unitils</groupId>
-- <artifactId>unitils-spring</artifactId>
-- <version>${unitils.version}</version>
-- <scope>test</scope>
-- <exclusions>
-- <exclusion>
-- <groupId>org.springframework</groupId>
-- <artifactId>spring-core</artifactId>
-- </exclusion>
-- <exclusion>
-- <groupId>org.springframework</groupId>
-- <artifactId>spring-context</artifactId>
-- </exclusion>
-- <exclusion>
-- <groupId>org.springframework</groupId>
-- <artifactId>spring-beans</artifactId>
-- </exclusion>
-- <exclusion>
-- <groupId>org.springframework</groupId>
-- <artifactId>spring-test</artifactId>
-- </exclusion>
-- </exclusions>
++ <exclusions>
++ <exclusion>
++ <groupId>org.springframework</groupId>
++ <artifactId>spring-context</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>org.springframework</groupId>
++ <artifactId>spring-orm</artifactId>
++ </exclusion>
++ </exclusions>
++ </dependency>
++ <dependency>
++ <groupId>org.unitils</groupId>
++ <artifactId>unitils-spring</artifactId>
++ <version>${unitils.version}</version>
++ <scope>test</scope>
++ <exclusions>
++ <exclusion>
++ <groupId>org.springframework</groupId>
++ <artifactId>spring-core</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>org.springframework</groupId>
++ <artifactId>spring-context</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>org.springframework</groupId>
++ <artifactId>spring-beans</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>org.springframework</groupId>
++ <artifactId>spring-test</artifactId>
++ </exclusion>
++ </exclusions>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<version>2.4.9</version>
<scope>test</scope>
</dependency>
++ <!-- dependency of unitils database, but with lower number there
++ , higher number needed for compatibility with current hibernate and Java 1.6 PreparedStatement -->
++ <dependency>
++ <groupId>commons-dbcp</groupId>
++ <artifactId>commons-dbcp</artifactId>
++ <version>1.4</version>
++<!-- <scope>test</scope> -->
++ </dependency>
++
<!-- ******* aspect ******* -->
<dependency>
<groupId>org.aspectj</groupId>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
-- <version>1.5</version>
++ <version>2.1</version>
</dependency>
<dependency>
++ <groupId>org.jadira.usertype</groupId>
++ <artifactId>usertype.jodatime</artifactId>
++ <version>2.0.1</version>
++ </dependency>
++
++ <!-- <dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time-hibernate</artifactId>
<version>1.0</version>
<artifactId>hibernate</artifactId>
</exclusion>
</exclusions>
-- </dependency>
++ </dependency> -->
++
++
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>${lucene.version}</version>
</dependency>
<dependency>
-- <groupId>org.springmodules</groupId>
-- <artifactId>spring-modules-lucene</artifactId>
-- <version>0.8</version>
-- <exclusions>
-- <exclusion>
-- <groupId>org.apache</groupId>
-- <artifactId>poi</artifactId>
-- </exclusion>
-- <exclusion>
-- <groupId>org.apache</groupId>
-- <artifactId>poi-scratchpad</artifactId>
-- </exclusion>
-- <exclusion>
-- <groupId>org.springframework</groupId>
-- <artifactId>spring-dao</artifactId>
-- </exclusion>
-- <exclusion>
-- <groupId>org.springframework</groupId>
-- <artifactId>spring-jca</artifactId>
-- </exclusion>
-- <exclusion>
-- <groupId>org.springframework</groupId>
-- <artifactId>spring-support</artifactId>
-- </exclusion>
-- <exclusion>
-- <groupId>org.springframework</groupId>
-- <artifactId>spring-beans</artifactId>
-- </exclusion>
-- <exclusion>
-- <groupId>org.springframework</groupId>
-- <artifactId>spring-aop</artifactId>
-- </exclusion>
-- <exclusion>
-- <groupId>org.springframework</groupId>
-- <artifactId>spring-context</artifactId>
-- </exclusion>
-- <exclusion>
-- <groupId>org.springframework</groupId>
-- <artifactId>spring-core</artifactId>
-- </exclusion>
-- <exclusion>
-- <groupId>org.springframework</groupId>
-- <artifactId>spring-jdbc</artifactId>
-- </exclusion>
-- </exclusions>
-- </dependency>
++ <groupId>org.apache.lucene</groupId>
++ <artifactId>lucene-grouping</artifactId>
++ <version>${lucene.version}</version>
++ </dependency>
++
<dependency>
<groupId>com.ibm.lsid</groupId>
<artifactId>lsid-client</artifactId>
<artifactId>stax</artifactId>
<version>1.2.0</version>
</dependency>
- <!-- ******* HIBERNATE / EJB3 ******* -->
<dependency>
- <groupId>javax.persistence</groupId>
- <artifactId>persistence-api</artifactId>
+ <groupId>xom</groupId>
+ <artifactId>xom</artifactId>
<version>1.0</version>
</dependency>
- <dependency>
+ <!-- ******* HIBERNATE / EJB3 ******* -->
- <dependency>
- <groupId>javax.persistence</groupId>
- <artifactId>persistence-api</artifactId>
- <version>1.0</version>
++ <dependency>
++ <groupId>org.hibernate.javax.persistence</groupId>
++ <artifactId>hibernate-jpa-2.0-api</artifactId>
++ <version>1.0.1.Final</version>
+ </dependency>
- <dependency>
++ <dependency>
<groupId>org.hibernate</groupId>
-- <artifactId>hibernate-annotations</artifactId>
++ <artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
-- <artifactId>hibernate-commons-annotations</artifactId>
++ <artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
-- <artifactId>hibernate-core</artifactId>
++ <artifactId>hibernate-ehcache</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
-- <artifactId>hibernate-search</artifactId>
-- <version>3.1.0.GA</version>
++ <artifactId>hibernate-envers</artifactId>
++ <version>${hibernate.version}</version>
++ </dependency>
++ <dependency>
++ <groupId>org.hibernate</groupId>
++ <artifactId>hibernate-c3p0</artifactId>
++ <version>${hibernate.version}</version>
<exclusions>
-- <exclusion>
-- <groupId>org.apache.lucene</groupId>
-- <artifactId>lucene-core</artifactId>
-- </exclusion>
++ <!-- version 0.9.1.x has a bug in NewProxyPreparedStatement
++ therefore we use com.mchange/c3po 0.9.2 instead -->
++ <exclusion>
++ <groupId>c3p0</groupId>
++ <artifactId>c3p0</artifactId>
++ </exclusion>
</exclusions>
</dependency>
++ <dependency>
++ <groupId>com.mchange</groupId>
++ <artifactId>c3p0</artifactId>
++ <version>0.9.2</version>
++ </dependency>
++
++
++ <!-- Part of hibernate-core since 3.6 -->
++<!-- <dependency> -->
++<!-- <groupId>org.hibernate</groupId> -->
++<!-- <artifactId>hibernate-annotations</artifactId> -->
++<!-- <version>3.5.6-Final</version> -->
++<!-- </dependency> -->
<dependency>
-- <groupId>org.hibernate</groupId>
-- <artifactId>hibernate-entitymanager</artifactId>
-- <version>${hibernate.version}</version>
++ <groupId>org.hibernate.common</groupId>
++ <artifactId>hibernate-commons-annotations</artifactId>
++ <version>4.0.1.FINAL</version>
</dependency>
++ <dependency>
++ <groupId>org.hibernate</groupId>
++ <artifactId>hibernate-search</artifactId>
++ <version>4.2.0.Final</version>
++ </dependency>
++
<dependency>
++ <!-- needed?? -->
<groupId>org.hibernate</groupId>
-- <artifactId>hibernate-envers</artifactId>
-- <version>${hibernate.version}</version>
++ <artifactId>hibernate-search-engine</artifactId>
++ <version>4.2.0.Final</version>
++ <exclusions>
++ <!-- still needed ?? -->
++ <exclusion>
++ <groupId>org.apache.lucene</groupId>
++ <artifactId>lucene-core</artifactId>
++ </exclusion>
++ </exclusions>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>hibernate-cglib-repack</artifactId>
<version>2.1_3</version>
</dependency>
++
<dependency>
-- <groupId>org.hibernate</groupId>
-- <artifactId>hibernate-ehcache</artifactId>
-- <version>${hibernate.version}</version>
-- </dependency>
-- <dependency>
++ <!-- still needed ?? -->
<groupId>org.hibernate</groupId>
<artifactId>hibernate-parent</artifactId>
++ <!-- last version is 3.6.10.Final -->
<version>${hibernate.version}</version>
</dependency>
-- <dependency>
-- <groupId>org.hibernate</groupId>
-- <artifactId>hibernate-c3p0</artifactId>
-- <version>${hibernate.version}</version>
-- </dependency>
++
<!-- ******* SPRING ******* -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-security-context</artifactId> <!-- could not find this on http://mvnrepository.com/ -->
<version>${spring-security.version}</version>
</dependency>
++ <dependency> <!-- needed for the FSDirectoryFactoryBean -->
++ <groupId>org.springmodules</groupId>
++ <artifactId>spring-modules-lucene</artifactId>
++ <version>0.8</version>
++ <exclusions>
++ <exclusion>
++ <groupId>org.apache.lucene</groupId>
++ <artifactId>lucene-core</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>org.apache</groupId>
++ <artifactId>poi</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>org.apache</groupId>
++ <artifactId>poi-scratchpad</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>org.springframework</groupId>
++ <artifactId>spring-dao</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>org.springframework</groupId>
++ <artifactId>spring-jca</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>org.springframework</groupId>
++ <artifactId>spring-support</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>org.springframework</groupId>
++ <artifactId>spring-beans</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>org.springframework</groupId>
++ <artifactId>spring-aop</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>org.springframework</groupId>
++ <artifactId>spring-context</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>org.springframework</groupId>
++ <artifactId>spring-core</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>org.springframework</groupId>
++ <artifactId>spring-jdbc</artifactId>
++ </exclusion>
++ </exclusions>
++ </dependency>
++
<!-- ******* SERVLET/JSP/JSF ******* -->
<dependency>
<groupId>javax.servlet</groupId>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
-- <version>1.1.115</version>
--<!-- <version>1.3.170</version> -->
++<!-- <version>1.1.115</version> -->
++ <version>1.3.170</version>
</dependency>
<!-- yourkit profiler api controller (used in ..)-->
<dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
-- <version>1.0.CR5</version>
++ <version>1.0.0.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
-- <version>4.0.0.CR1</version>
++ <version>4.3.1.Final</version>
</dependency>
<dependency>
<groupId>p6spy</groupId>