EDITOR VARCHAR(255),
ISBN VARCHAR(255),
ISSN VARCHAR(255),
+ DOI VARCHAR(255),
NOMENCLATURALLYRELEVANT BOOLEAN NOT NULL,
ORGANIZATION VARCHAR(255),
PAGES VARCHAR(255),
EDITOR VARCHAR(255),
ISBN VARCHAR(255),
ISSN VARCHAR(255),
+ DOI VARCHAR(255),
NOMENCLATURALLYRELEVANT BOOLEAN,
ORGANIZATION VARCHAR(255),
PAGES VARCHAR(255),
Feature feature = categorical.getFeature();\r
Representation representation = (Representation) feature.getRepresentations().toArray()[0];\r
texte += "<li>Categorical data associated with feature: <b>" + representation.getLabel() + "</b><br/>\nStates: ";\r
- for (Iterator<? extends StateData> sd = categorical.getStates().iterator() ; sd.hasNext() ;){\r
+ for (Iterator<? extends StateData> sd = categorical.getStateData().iterator() ; sd.hasNext() ;){\r
StateData stateData = (StateData) sd.next();\r
texte += ((Representation) stateData.getState().getRepresentations().toArray()[0]).getLabel();\r
if (sd.hasNext()) texte += "; "; else texte += ".<br/>\n";\r
stateData.addModifier(modifier);\r
}\r
}\r
- categoricalData.addState(stateData);\r
+ categoricalData.addStateData(stateData);\r
}\r
taxonDescription.addElement(categoricalData);\r
}\r
stateData.addModifier(modifier);\r
}\r
}\r
- categoricalData.addState(stateData);\r
+ categoricalData.addStateData(stateData);\r
}\r
taxonDescription.addElement(categoricalData);\r
}\r
Feature feature = categoricalData.getFeature();\r
buildReference(feature, characters, REF, categorical, "c",\r
charactersCount);\r
- List<StateData> states = categoricalData.getStates();\r
+ List<StateData> states = categoricalData.getStateData();\r
for (Iterator<StateData> sd = states.iterator(); sd.hasNext();) {\r
StateData stateData = sd.next();\r
State s = stateData.getState();\r
EDITOR VARCHAR(255),
ISBN VARCHAR(255),
ISSN VARCHAR(255),
+ DOI VARCHAR(255),
NOMENCLATURALLYRELEVANT BOOLEAN NOT NULL,
ORGANIZATION VARCHAR(255),
PAGES VARCHAR(255),
EDITOR VARCHAR(255),
ISBN VARCHAR(255),
ISSN VARCHAR(255),
+ DOI VARCHAR(255),
NOMENCLATURALLYRELEVANT BOOLEAN,
ORGANIZATION VARCHAR(255),
PAGES VARCHAR(255),
@Column(length=255, name="titleCache")
@Match(value=MatchMode.CACHE, cacheReplaceMode=ReplaceMode.ALL)
@NotEmpty(groups = Level2.class) // implictly NotNull
- @Size(max = 255)
+ @Size(max = 1023)
@Fields({
@Field(store=Store.YES),
@Field(name = "titleCache__sort", analyze = Analyze.NO, store=Store.YES)
*/
@Transient
protected String getTruncatedCache(String cache) {
- if (cache != null && cache.length() > 255){
+ if (cache != null && cache.length() > 1023){
logger.warn("Truncation of cache: " + this.toString() + "/" + cache);
- cache = cache.substring(0, 252) + "...";
+ cache = cache.substring(0, 1020) + "...";
}
return cache;
}
@Cascade({ CascadeType.SAVE_UPDATE, CascadeType.MERGE, CascadeType.DELETE,CascadeType.DELETE_ORPHAN })
@IndexedEmbedded(depth = 3)
@NotEmpty(groups = Level2.class)
- private List<StateData> states = new ArrayList<StateData>();
+ private List<StateData> stateData = new ArrayList<StateData>();
//****************************** FACTORY METHOD *******************************/
protected CategoricalData(List<State> states, Feature feature) {
super(feature);
for (State state : states){
- addState(state);
+ addStateData(state);
}
}
* corresponding to <i>this</i> categorical data.
*/
- public List<StateData> getStates(){
- return this.states;
+ public List<StateData> getStateData(){
+ return this.stateData;
}
protected void setStates(List<StateData> stateData){
- this.states = stateData;
+ this.stateData = stateData;
}
/**
- * Adds a {@link State state} to the list of {@link #getStates() states}
+ * Adds a {@link State state} to the list of {@link #getStateData() states}
* describing the {@link Feature feature} corresponding to <i>this</i> categorical data.
*
* @param state the state to be added to <i>this</i> categorical data
- * @see #getStates()
+ * @see #getStateData()
*/
- public void addState(StateData state){
- this.states.add(state);
+ public void addStateData(StateData stateData){
+ this.stateData.add(stateData);
}
/**
* Convenience method which creates a state data from a given state with no modifiers
* and adds it to the list of state data
- * @see #addState(StateData)
+ * @see #addStateData(StateData)
* @param state
*/
- public void addState(State state){
+ public void addStateData(State state){
StateData stateData = StateData.NewInstance(state);
- this.states.add(stateData);
+ this.stateData.add(stateData);
}
/**
- * Removes one element from the set of {@link #getStates() states}
+ * Removes one element from the set of {@link #getStateData() states}
* describing the {@link Feature feature} corresponding to <i>this</i> categorical data.
*
* @param state the state which should be removed
- * @see #getStates()
- * @see #addState(State)
+ * @see #getStateData()
+ * @see #addStateData(State)
*/
- public void removeState(StateData state){
- this.states.remove(state);
+ public void removeStateData(StateData stateData){
+ this.stateData.remove(stateData);
}
//rename to isStateSequenceIntentional ??
@Transient
public List<State> getStatesOnly(){
List<State> result = new ArrayList<State>();
- for (StateData stateData : getStates()){
+ for (StateData stateData : getStateData()){
State state = stateData.getState();
result.add(state);
}
* @return
*/
@Transient
- public List<StateData> setStatesOnly(List<State> states){
- this.states.clear();
+ public List<StateData> setStateDataOnly(List<State> states){
+ this.stateData.clear();
for (State state : states){
StateData stateDate = StateData.NewInstance(state);
- this.states.add(stateDate);
+ this.stateData.add(stateDate);
}
- return this.states;
+ return this.stateData;
}
CategoricalData result = (CategoricalData)super.clone();
//states
- result.states = new ArrayList<StateData>();
- for (StateData stateData : getStates()){
+ result.stateData = new ArrayList<StateData>();
+ for (StateData stateData : getStateData()){
//TODO do we need to clone here?
//StateData newState = (StateData)stateData.clone();
- result.states.add(stateData);
+ result.stateData.add(stateData);
}
return result;
@Match(value=MatchMode.CACHE, cacheReplaceMode=ReplaceMode.ALL)
@CacheUpdate(noUpdate ="titleCache")
@NotEmpty(groups = Level2.class)
- @Size(max = 330)
+ @Size(max = 1023)
protected String fullTitleCache;
//if true titleCache will not be automatically generated/updated
*/\r
public void setPublisher(String publisher, String placePublished);\r
\r
+ /**\r
+ * @return\r
+ */\r
+ public String getDoi();\r
\r
+ public void setDoi(String doi);\r
+ \r
}\r
"edition",\r
"isbn",\r
"issn",\r
+ "doi",\r
"seriesPart",\r
"datePublished",\r
"publisher",\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 = "Doi")\r
+ @Field\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.doi.message}")\r
+ protected String doi;\r
+\r
+\r
@XmlElement(name = "ISSN")\r
@Field\r
//TODO Val #3379\r
public void setIssn(String issn) {\r
this.issn = issn;\r
}\r
+ \r
+ @Override\r
+ public String getDoi() {\r
+ return doi;\r
+ }\r
+\r
+ @Override\r
+ public void setDoi(String doi) {\r
+ this.doi = doi;\r
+ }\r
\r
@Override\r
public String getSeriesPart() {\r
private Map<Set<TaxonDescription>,List<State>> determineCategoricalStates(List<State> statesDone, CategoricalData categoricalData, Feature feature, Set<TaxonDescription> taxaCovered){
Map<Set<TaxonDescription>,List<State>> childrenStatesMap = new HashMap<Set<TaxonDescription>,List<State>>();
- List<StateData> stateDatas = categoricalData.getStates();
+ List<StateData> stateDatas = categoricalData.getStateData();
List<State> states = new ArrayList<State>();
for (StateData sd : stateDatas){
for (DescriptionElementBase deb : elements){
if (deb.isInstanceOf(CategoricalData.class)) {
if (deb.getFeature().equals(feature)) {
- List<StateData> stateDatas = ((CategoricalData)deb).getStates();
+ List<StateData> stateDatas = ((CategoricalData)deb).getStateData();
for (StateData sd : stateDatas) {
if (sd.getState().equals(featureState)){
newCoveredTaxa.add(td);
if (deb.isInstanceOf(CategoricalData.class)) {
CategoricalData catdat = (CategoricalData)deb;
if (catdat.getFeature().equals(feature)) {
- List<StateData> stateDatas = catdat.getStates();
+ List<StateData> stateDatas = catdat.getStateData();
for (StateData sd : stateDatas) {
differentStates.add(sd.getState());
}
{
CategoricalData cat1 = (CategoricalData)deb1;
CategoricalData cat2 = (CategoricalData)deb2;
- for (StateData statedata1 : cat1.getStates()){
+ for (StateData statedata1 : cat1.getStateData()){
State state1 = statedata1.getState();
if (!exclusions.containsKey(state1)){
exclusions.put(state1, new HashSet<State>());
}
- for (StateData statedata2 : cat2.getStates()){
+ for (StateData statedata2 : cat2.getStateData()){
State state2 = statedata2.getState();
if (!exclusions.containsKey(state2)){
exclusions.put(state2, new HashSet<State>());
* @return
*/
private float defaultCategoricalPower(CategoricalData deb1, CategoricalData deb2){
- List<StateData> states1 = deb1.getStates();
- List<StateData> states2 = deb2.getStates();
+ List<StateData> states1 = deb1.getStateData();
+ List<StateData> states2 = deb2.getStateData();
boolean bool = false;
Iterator<StateData> stateData1Iterator = states1.iterator() ;
// while (!bool && stateData1Iterator.hasNext()) {
useCategoryVocabulary.addTerm(useCategory2);\r
\r
StateData stateData = StateData.NewInstance(useCategory1);\r
- data.addState(stateData);\r
+ data.addStateData(stateData);\r
StateData stateData2 = StateData.NewInstance(useCategory2);\r
stateData2.addModifier(DefinedTerm.NewModifierInstance(null, "Any modifer", null));\r
- data.addState(stateData2);\r
+ data.addStateData(stateData2);\r
\r
List<State> states = data.getStatesOnly();\r
Assert.assertEquals("There should be 2 states", 2, states.size());\r
}\r
\r
/**\r
- * Test method for {@link eu.etaxonomy.cdm.model.description.CategoricalData#setStatesOnly(List)}.\r
+ * Test method for {@link eu.etaxonomy.cdm.model.description.CategoricalData#setStateDataOnly(List)}.\r
*/\r
@Test\r
public void testSetStatesOnly() {\r
TermVocabulary<State> useCategoryVocabulary = TermVocabulary.NewInstance(TermType.Feature,"Use category vocabulary", "use categories", null, null);\r
State useCategory1 = State.NewInstance("My first use category", "use category 1", null);\r
useCategoryVocabulary.addTerm(useCategory1);\r
- data.addState(useCategory1);\r
- Assert.assertEquals("There should be 1 state now", 1, data.getStates().size());\r
+ data.addStateData(useCategory1);\r
+ Assert.assertEquals("There should be 1 state now", 1, data.getStateData().size());\r
\r
State useCategory2 = State.NewInstance("My favorite use category", "use category 2", null);\r
useCategoryVocabulary.addTerm(useCategory2);\r
newStates.addAll(Arrays.asList(useCategory2, useCategory3));\r
\r
// setting new states and thus removing useCategory1\r
- List<StateData> stateDataList = data.setStatesOnly(newStates);\r
+ List<StateData> stateDataList = data.setStateDataOnly(newStates);\r
Assert.assertEquals("There should be 2 StateData objects", 2, stateDataList.size());\r
- Assert.assertEquals("There should be 2 StateData objects", 2, data.getStates().size());\r
+ Assert.assertEquals("There should be 2 StateData objects", 2, data.getStateData().size());\r
Assert.assertFalse("Category 1 should not be included anymore", data.getStatesOnly().contains(useCategory1));\r
Assert.assertTrue("Category 2 should be included", data.getStatesOnly().contains(useCategory2));\r
\r
source.setCitation(citation);\r
categorialData.addSource(source );\r
StateData state = StateData.NewInstance();\r
- categorialData.addState(state);\r
+ categorialData.addStateData(state);\r
\r
indAssociation = IndividualsAssociation.NewInstance();\r
\r
@Test\r
public void testCloneCategorialData(){\r
CategoricalData clone = (CategoricalData)categorialData.clone();\r
- assertEquals(clone.getStates().size(),categorialData.getStates().size() );\r
- assertSame(clone.getStates().get(0), categorialData.getStates().get(0));\r
+ assertEquals(clone.getStateData().size(),categorialData.getStateData().size() );\r
+ assertSame(clone.getStateData().get(0), categorialData.getStateData().get(0));\r
assertNotSame(clone, categorialData);\r
\r
}\r
CategoricalData data = CategoricalData.NewInstance();\r
desc.addElement(data);\r
StateData stateData = StateData.NewInstance();\r
- data.addState(stateData);\r
+ data.addStateData(stateData);\r
\r
TermType modifierType = TermType.Modifier;\r
TermVocabulary<DefinedTerm> plantPartVoc = TermVocabulary.NewInstance(modifierType,"plant parts", "plant parts", "parts", null);\r
State s11 = State.NewInstance("","Triangular","");\r
State s12 = State.NewInstance("","Circular","");\r
sd11.setState(s11);\r
- catd11.addState(sd11);\r
+ catd11.addStateData(sd11);\r
\r
CategoricalData catd12 = CategoricalData.NewInstance();\r
catd12.setFeature(feature1);\r
StateData sd12 = StateData.NewInstance();\r
sd12.setState(s11);\r
- catd12.addState(sd12);\r
+ catd12.addStateData(sd12);\r
\r
CategoricalData catd13 = CategoricalData.NewInstance();\r
catd13.setFeature(feature1);\r
StateData sd13 = StateData.NewInstance();\r
sd13.setState(s11);\r
- catd13.addState(sd13);\r
+ catd13.addStateData(sd13);\r
\r
CategoricalData catd14 = CategoricalData.NewInstance();\r
catd14.setFeature(feature1);\r
StateData sd14 = StateData.NewInstance();\r
sd14.setState(s11);\r
- catd14.addState(sd14);\r
+ catd14.addStateData(sd14);\r
\r
CategoricalData catd15 = CategoricalData.NewInstance();\r
catd15.setFeature(feature1);\r
StateData sd15 = StateData.NewInstance();\r
sd15.setState(s12);\r
- catd15.addState(sd15);\r
+ catd15.addStateData(sd15);\r
\r
CategoricalData catd16 = CategoricalData.NewInstance();\r
catd16.setFeature(feature1);\r
StateData sd16 = StateData.NewInstance();\r
sd16.setState(s12);\r
- catd16.addState(sd16);\r
+ catd16.addStateData(sd16);\r
\r
CategoricalData catd17 = CategoricalData.NewInstance();\r
catd17.setFeature(feature1);\r
StateData sd17 = StateData.NewInstance();\r
sd17.setState(s12);\r
- catd17.addState(sd17);\r
+ catd17.addStateData(sd17);\r
\r
CategoricalData catd18 = CategoricalData.NewInstance();\r
catd18.setFeature(feature1);\r
StateData sd18 = StateData.NewInstance();\r
sd18.setState(s12);\r
- catd18.addState(sd18);\r
+ catd18.addStateData(sd18);\r
\r
/*************************/\r
\r
State s21 = State.NewInstance("","Yes","");\r
State s22 = State.NewInstance("","No","");\r
sd21.setState(s21);\r
- catd21.addState(sd21);\r
+ catd21.addStateData(sd21);\r
\r
CategoricalData catd22 = CategoricalData.NewInstance();\r
catd22.setFeature(feature2);\r
StateData sd22 = StateData.NewInstance();\r
sd22.setState(s21);\r
- catd22.addState(sd22);\r
+ catd22.addStateData(sd22);\r
\r
CategoricalData catd23 = CategoricalData.NewInstance();\r
catd23.setFeature(feature2);\r
StateData sd23 = StateData.NewInstance();\r
sd23.setState(s21);\r
- catd23.addState(sd23);\r
+ catd23.addStateData(sd23);\r
\r
CategoricalData catd24 = CategoricalData.NewInstance();\r
catd24.setFeature(feature2);\r
StateData sd24 = StateData.NewInstance();\r
sd24.setState(s21);\r
- catd24.addState(sd24);\r
+ catd24.addStateData(sd24);\r
\r
CategoricalData catd25 = CategoricalData.NewInstance();\r
catd25.setFeature(feature2);\r
StateData sd25 = StateData.NewInstance();\r
sd25.setState(s21);\r
- catd25.addState(sd25);\r
+ catd25.addStateData(sd25);\r
\r
CategoricalData catd26 = CategoricalData.NewInstance();\r
catd26.setFeature(feature2);\r
StateData sd26 = StateData.NewInstance();\r
sd26.setState(s21);\r
- catd26.addState(sd26);\r
+ catd26.addStateData(sd26);\r
\r
CategoricalData catd27 = CategoricalData.NewInstance();\r
catd27.setFeature(feature2);\r
StateData sd27 = StateData.NewInstance();\r
sd27.setState(s21);\r
- catd27.addState(sd27);\r
+ catd27.addStateData(sd27);\r
\r
CategoricalData catd28 = CategoricalData.NewInstance();\r
catd28.setFeature(feature2);\r
StateData sd28 = StateData.NewInstance();\r
sd28.setState(s22);\r
- catd28.addState(sd28);\r
+ catd28.addStateData(sd28);\r
\r
/*************************/\r
\r
State s41 = State.NewInstance("","Blue","");\r
State s42 = State.NewInstance("","Yellow","");\r
sd41.setState(s41);\r
- catd41.addState(sd41);\r
+ catd41.addStateData(sd41);\r
\r
CategoricalData catd42 = CategoricalData.NewInstance();\r
catd42.setFeature(feature4);\r
StateData sd42 = StateData.NewInstance();\r
sd42.setState(s42);\r
- catd42.addState(sd42);\r
+ catd42.addStateData(sd42);\r
\r
CategoricalData catd43 = CategoricalData.NewInstance();\r
catd43.setFeature(feature4);\r
StateData sd43 = StateData.NewInstance();\r
sd43.setState(s41);\r
- catd43.addState(sd43);\r
+ catd43.addStateData(sd43);\r
\r
CategoricalData catd44 = CategoricalData.NewInstance();\r
catd44.setFeature(feature4);\r
StateData sd44 = StateData.NewInstance();\r
sd44.setState(s42);\r
- catd44.addState(sd44);\r
+ catd44.addStateData(sd44);\r
\r
CategoricalData catd45 = CategoricalData.NewInstance();\r
catd45.setFeature(feature4);\r
StateData sd45 = StateData.NewInstance();\r
sd45.setState(s41);\r
- catd45.addState(sd45);\r
+ catd45.addStateData(sd45);\r
\r
CategoricalData catd46 = CategoricalData.NewInstance();\r
catd46.setFeature(feature4);\r
StateData sd46 = StateData.NewInstance();\r
sd46.setState(s41);\r
- catd46.addState(sd46);\r
+ catd46.addStateData(sd46);\r
\r
CategoricalData catd47 = CategoricalData.NewInstance();\r
catd47.setFeature(feature4);\r
StateData sd47 = StateData.NewInstance();\r
sd47.setState(s41);\r
- catd47.addState(sd47);\r
+ catd47.addStateData(sd47);\r
\r
CategoricalData catd48 = CategoricalData.NewInstance();\r
catd48.setFeature(feature4);\r
StateData sd48 = StateData.NewInstance();\r
sd48.setState(s41);\r
- catd48.addState(sd48);\r
+ catd48.addStateData(sd48);\r
\r
/*************************/\r
\r
//TODO remove citation_id and citationmicroreference columns from Media table #2541
//first check if columns are always empty
+ //TODO update length of all title caches and full title cache in names
+ //https://dev.e-taxonomy.eu/trac/ticket/1592
+
return stepList;
}
stateData.putModifyingText(Language.ENGLISH(), "test modifier");\r
LanguageString langString = stateData.getModifyingText().get(Language.ENGLISH());\r
langString.setUuid(UUID.fromString("53a91bd4-d758-47ec-a385-94799bdb9f32"));\r
- data.addState(stateData);\r
+ data.addStateData(stateData);\r
// Modifier modifier = Modifier.NewInstance("my test modifier", "test", null);\r
// TODO still throws JDBC batch update exception, one reason may be that in hibernate_sequence nextVal for definedtermbase is "1"\r
// stateData.addModifier(modifier);\r
EDITOR VARCHAR(255),
ISBN VARCHAR(255),
ISSN VARCHAR(255),
+ DOI VARCHAR(255),
NOMENCLATURALLYRELEVANT BOOLEAN NOT NULL,
ORGANIZATION VARCHAR(255),
PAGES VARCHAR(255),
EDITOR VARCHAR(255),
ISBN VARCHAR(255),
ISSN VARCHAR(255),
+ DOI VARCHAR(255),
NOMENCLATURALLYRELEVANT BOOLEAN,
ORGANIZATION VARCHAR(255),
PAGES VARCHAR(255),
if(descriptionElement instanceof CategoricalData){
}
- List<StateData> states = ((CategoricalData)descriptionElement).getStates();
+ List<StateData> states = ((CategoricalData)descriptionElement).getStateData();
mv.addObject(states);
return mv;
}
public abstract class AbstractCategoricalDescriptionBuilder extends DescriptionBuilder<CategoricalData>{
public TextData build(CategoricalData data, List<Language> languages) {
- return doBuild(data.getStates(), languages);
+ return doBuild(data.getStateData(), languages);
}
protected abstract TextData doBuild(List<StateData> stateDatas, List<Language> languages);
State state = State.NewInstance(null, feature.getLabel()+"state", null);
StateData stateData = StateData.NewInstance();
stateData.setState(state);
- cg.addState(stateData);
+ cg.addStateData(stateData);
description.addElement(cg);
}
Feature qFeature = Feature.NewInstance(null, "c", null);
\r
StateData statedata = StateData.NewInstance(state);\r
statedata.putModifyingText(Language.ENGLISH(), "always, even during winter");\r
- cdata.addState(statedata);\r
+ cdata.addStateData(statedata);\r
d_abies_balsamea.addElement(cdata);\r
\r
termService.save(state);\r
EDITOR VARCHAR(255),
ISBN VARCHAR(255),
ISSN VARCHAR(255),
+ DOI VARCHAR(255),
NOMENCLATURALLYRELEVANT BOOLEAN NOT NULL,
ORGANIZATION VARCHAR(255),
PAGES VARCHAR(255),
EDITOR VARCHAR(255),
ISBN VARCHAR(255),
ISSN VARCHAR(255),
+ DOI VARCHAR(255),
NOMENCLATURALLYRELEVANT BOOLEAN,
ORGANIZATION VARCHAR(255),
PAGES VARCHAR(255),