Revision 71be5a6e
Added by Andreas Müller almost 3 years ago
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Reference.java | ||
---|---|---|
828 | 828 |
} |
829 | 829 |
|
830 | 830 |
public String generateAbbrevTitle() { |
831 |
return getCacheStrategy().getFullAbbrevTitleString(this);
|
|
831 |
return getCacheStrategy().getNomenclaturalTitleCache(this);
|
|
832 | 832 |
} |
833 | 833 |
|
834 | 834 |
/** |
... | ... | |
1199 | 1199 |
if (this.protectedAbbrevTitleCache == false){ |
1200 | 1200 |
String oldAbbrevTitleCache = this.abbrevTitleCache; |
1201 | 1201 |
|
1202 |
String newAbbrevTitleCache = getTruncatedCache(getCacheStrategy().getFullAbbrevTitleString(this));
|
|
1202 |
String newAbbrevTitleCache = getTruncatedCache(getCacheStrategy().getNomenclaturalTitleCache(this));
|
|
1203 | 1203 |
if (newAbbrevTitleCache.equals("")){ |
1204 | 1204 |
newAbbrevTitleCache = getCacheStrategy().getTitleCache(this); |
1205 | 1205 |
} |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/IReferenceCacheStrategy.java | ||
---|---|---|
30 | 30 |
*/ |
31 | 31 |
public String getFullAbbrevTitleString(Reference reference); |
32 | 32 |
|
33 |
/** |
|
34 |
* Returns the nomenclatural title cache which equals the nomenclatural citation |
|
35 |
* string without detail (page) information. |
|
36 |
* @return |
|
37 |
* the nomenclatural title cache |
|
38 |
*/ |
|
39 |
public String getNomenclaturalTitleCache(Reference reference); |
|
40 |
|
|
33 | 41 |
} |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/ReferenceDefaultCacheStrategy.java | ||
---|---|---|
73 | 73 |
|
74 | 74 |
private static final boolean trim = true; |
75 | 75 |
|
76 |
private final NomenclaturalSourceFormatter nomSourceFormatter = NomenclaturalSourceFormatter.INSTANCE(); |
|
77 |
|
|
76 | 78 |
// ************************ FACTORY ****************************/ |
77 | 79 |
|
78 | 80 |
public static ReferenceDefaultCacheStrategy NewInstance(){ |
... | ... | |
154 | 156 |
return result; |
155 | 157 |
} |
156 | 158 |
|
159 |
@Override |
|
160 |
public String getNomenclaturalTitleCache(Reference reference) { |
|
161 |
if (reference == null){ |
|
162 |
return null; |
|
163 |
}else{ |
|
164 |
String refStr = nomSourceFormatter.format(reference, null); |
|
165 |
TeamOrPersonBase<?> authorTeam = reference.getAuthorship(); |
|
166 |
String authorStr = authorTeam == null? null : authorTeam.getNomenclaturalTitle(); |
|
167 |
String sep = refStr.startsWith("in ")? " ": ", "; |
|
168 |
return CdmUtils.concat(sep, authorStr, refStr); |
|
169 |
} |
|
170 |
} |
|
171 |
|
|
157 | 172 |
@Override |
158 | 173 |
public String getFullAbbrevTitleString(Reference reference) { |
159 | 174 |
if (reference == null){ |
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/reference/ReferenceDefaultCacheStrategyTest.java | ||
---|---|---|
179 | 179 |
article1.setSeriesPart("II"); |
180 | 180 |
//TODO unclear if punctuation is correct |
181 | 181 |
Assert.assertEquals("Team1 1975: My article. "+UTF8.EN_DASH+" My journal, II, 7: 12-22", article1.getTitleCache()); |
182 |
} |
|
182 |
}
|
|
183 | 183 |
|
184 | 184 |
@Test |
185 | 185 |
public void testArticleGetAbbrevTitleCache(){ |
... | ... | |
192 | 192 |
article1.setAuthorship(articleTeam1); |
193 | 193 |
article1.setDatePublished(VerbatimTimePeriod.NewVerbatimInstance(1975)); |
194 | 194 |
article1.setAbbrevTitle("M. Art."); |
195 |
Assert.assertEquals("T. 1975: M. Art. "+UTF8.EN_DASH+" M. Journ.", article1.getAbbrevTitleCache());
|
|
195 |
Assert.assertEquals("T. 1975: M. Art. "+UTF8.EN_DASH+" M. Journ.", defaultStrategy.getFullAbbrevTitleString((Reference)article1));
|
|
196 | 196 |
article1.setVolume("7"); |
197 |
Assert.assertEquals("T. 1975: M. Art. "+UTF8.EN_DASH+" M. Journ. 7", article1.getAbbrevTitleCache()); |
|
198 |
|
|
199 |
article1.setInJournal(null); |
|
200 |
article1.setTitleCache(null, false); |
|
201 |
Assert.assertEquals("Team1 1975: My article. "+UTF8.EN_DASH + " " +ReferenceDefaultCacheStrategy.UNDEFINED_JOURNAL + " 7", article1.getTitleCache()); |
|
197 |
Assert.assertEquals("T. 1975: M. Art. "+UTF8.EN_DASH+" M. Journ. 7", defaultStrategy.getFullAbbrevTitleString((Reference)article1)); |
|
202 | 198 |
} |
203 | 199 |
|
200 |
@Test |
|
201 |
public void testNomenclaturalTitle(){ |
|
202 |
|
|
203 |
journal1.setTitle("My journal"); |
|
204 |
journal1.setTitle("M. Journ."); |
|
205 |
((Reference)journal1).setAuthorship(articleTeam2); |
|
206 |
article1.setTitle("My article"); |
|
207 |
article1.setInJournal(journal1); |
|
208 |
article1.setAuthorship(articleTeam1); |
|
209 |
article1.setDatePublished(VerbatimTimePeriod.NewVerbatimInstance(1975)); |
|
210 |
article1.setAbbrevTitle("M. Art."); |
|
211 |
article1.setVolume("7"); |
|
212 |
Assert.assertEquals("T. in M. Journ. 7. 1975", article1.getAbbrevTitleCache()); |
|
213 |
} |
|
214 |
|
|
204 | 215 |
@Test |
205 | 216 |
public void testArticleGetTitleWithoutYearAndAuthor() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ |
206 | 217 |
journal1.setTitle("My journal"); |
... | ... | |
483 | 494 |
generic1.setTitleCache(null, false); //reset cache in case aspectJ is not enabled |
484 | 495 |
generic1.setAbbrevTitleCache(null, false); //reset cache in case aspectJ is not enabled |
485 | 496 |
//TODO needs discussion |
486 |
Assert.assertEquals("Unexpected abbrev title cache.", "1987: Pt. Tit. "+UTF8.EN_DASH+" In: AT., My bk. tit.", generic1.getAbbrevTitleCache()); |
|
497 |
Assert.assertEquals("Unexpected abbrev title cache.", "1987: Pt. Tit. "+UTF8.EN_DASH+" In: AT., My bk. tit.", defaultStrategy.getFullAbbrevTitleString((Reference)generic1)); |
|
498 |
|
|
499 |
//protected |
|
500 |
generic1.setAbbrevTitleCache("My prot. abb. tit. in a bk.", true); |
|
501 |
Assert.assertEquals("Unexpected abbrev title cache.", "My prot. abb. tit. in a bk.", defaultStrategy.getFullAbbrevTitleString((Reference)generic1)); |
|
502 |
} |
|
503 |
|
|
504 |
@Test |
|
505 |
public void testGenericNomenclaturalTitle(){ |
|
506 |
generic1.setTitle("Part Title"); |
|
507 |
generic1.setAbbrevTitle("Pt. Tit."); |
|
508 |
generic1.setDatePublished(TimePeriodParser.parseStringVerbatim("1987")); |
|
509 |
IBook book1 = ReferenceFactory.newBook(); |
|
510 |
book1.setTitle("My book title"); |
|
511 |
book1.setAbbrevTitle("My bk. tit."); |
|
512 |
book1.setAuthorship(genericTeam1); //TODO handling not yet defined |
|
513 |
Reference inRef = (Reference)book1; |
|
514 |
generic1.setInReference(inRef); |
|
515 |
generic1.setTitleCache(null, false); //reset cache in case aspectJ is not enabled |
|
516 |
generic1.setAbbrevTitleCache(null, false); //reset cache in case aspectJ is not enabled |
|
517 |
Assert.assertEquals("Unexpected abbrev title cache.", "in AT., My bk. tit. 1987", generic1.getAbbrevTitleCache()); |
|
487 | 518 |
Assert.assertEquals("Title cache must still be the same", "1987: Part Title. "+UTF8.EN_DASH+" In: Authorteam, My book title", generic1.getTitleCache()); |
488 | 519 |
|
489 | 520 |
//protected |
... | ... | |
524 | 555 |
generic1.setTitleCache(null, false); //reset cache in case aspectJ is not enabled |
525 | 556 |
generic1.setVolume("7"); |
526 | 557 |
Assert.assertEquals("Authorteam 1883"+SEP+"1884: My generic 7", generic1.getTitleCache()); |
527 |
Assert.assertEquals("AT. 1883"+SEP+"1884: My generic 7", generic1.getAbbrevTitleCache());
|
|
558 |
Assert.assertEquals("AT., My generic 7. 1883"+UTF8.EN_DASH+"1884", generic1.getAbbrevTitleCache());
|
|
528 | 559 |
|
529 | 560 |
//inRef |
530 | 561 |
Reference generic2 = ReferenceFactory.newGeneric(); |
... | ... | |
547 | 578 |
//only inref has volume |
548 | 579 |
generic1.setVolume(null); |
549 | 580 |
Assert.assertEquals("Authorteam 1883"+SEP+"1884: My generic. "+UTF8.EN_DASH+" In: InRefAuthor, My InRef 9", generic1.getTitleCache()); |
550 |
Assert.assertEquals("AT. 1883"+SEP+"1884: My generic. "+UTF8.EN_DASH+" In: InRefAuthor, My InRef 9", generic1.getAbbrevTitleCache());
|
|
581 |
Assert.assertEquals("AT. in InRefAuthor, My InRef 9. 1883"+UTF8.EN_DASH+"1884", generic1.getAbbrevTitleCache());
|
|
551 | 582 |
} |
552 | 583 |
|
553 | 584 |
// ********************************** WEB PAGE ********************************************/ |
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/hibernate/CacheStrategyGeneratorTest.testOnSaveOrUpdateReferences-result.xml | ||
---|---|---|
1 | 1 |
<?xml version='1.0' encoding='UTF-8'?> |
2 | 2 |
<dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../database/schema/dataset.xsd"> |
3 | 3 |
<REFERENCE UUID="596b1325-be50-4b0a-9aa2-3ecd610215f2" TITLECACHE="Lorem ipsum" PROTECTEDTITLECACHE="true" ABBREVTITLE="Sp. Pl." ABBREVTITLECACHE="Sp. Pl." PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK" /> |
4 |
<REFERENCE UUID="a7fdf3b8-acd8-410a-afcd-1768d29d67e9" TITLE="My journal" TITLECACHE="P1LN, P.: My journal" PROTECTEDTITLECACHE="false" ABBREVTITLE="M. Journ." ABBREVTITLECACHE="P1LN, P.: M. Journ." PROTECTEDABBREVTITLECACHE="false" REFTYPE="JOU" />
|
|
5 |
<REFERENCE UUID="eb090fbc-5895-405c-aba5-cac287efb128" TITLE="[null]" TITLECACHE="P2LN, P. 1972: M. Art. – My journal 1" PROTECTEDTITLECACHE="false" ABBREVTITLE="M. Art." ABBREVTITLECACHE="P2NomT 1972: M. Art. – M. Journ. 1" PROTECTEDABBREVTITLECACHE="false" DATEPUBLISHED_START="19720000" REFTYPE="ART" VOLUME="1"/>
|
|
4 |
<REFERENCE UUID="a7fdf3b8-acd8-410a-afcd-1768d29d67e9" TITLE="My journal" TITLECACHE="P1LN, P.: My journal" PROTECTEDTITLECACHE="false" ABBREVTITLE="M. Journ." ABBREVTITLECACHE="P1LN, P., M. Journ." PROTECTEDABBREVTITLECACHE="false" REFTYPE="JOU" />
|
|
5 |
<REFERENCE UUID="eb090fbc-5895-405c-aba5-cac287efb128" TITLE="[null]" TITLECACHE="P2LN, P. 1972: M. Art. – My journal 1" PROTECTEDTITLECACHE="false" ABBREVTITLE="M. Art." ABBREVTITLECACHE="P2NomT in M. Journ. 1. 1972" PROTECTEDABBREVTITLECACHE="false" DATEPUBLISHED_START="19720000" REFTYPE="ART" VOLUME="1"/>
|
|
6 | 6 |
</dataset> |
Also available in: Unified diff
ref #9639 replace fullAbbreviatedTitleCache by nomenclaturalTitleCache for references