2 * Copyright (C) 2009 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.model
.reference
;
12 import org
.apache
.log4j
.Logger
;
14 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
15 import eu
.etaxonomy
.cdm
.model
.common
.TimePeriod
;
16 import eu
.etaxonomy
.cdm
.strategy
.cache
.reference
.ArticleDefaultCacheStrategy
;
17 import eu
.etaxonomy
.cdm
.strategy
.cache
.reference
.BookDefaultCacheStrategy
;
18 import eu
.etaxonomy
.cdm
.strategy
.cache
.reference
.BookSectionDefaultCacheStrategy
;
19 import eu
.etaxonomy
.cdm
.strategy
.cache
.reference
.CdDvdDefaultCacheStrategy
;
20 import eu
.etaxonomy
.cdm
.strategy
.cache
.reference
.GenericDefaultCacheStrategy
;
21 import eu
.etaxonomy
.cdm
.strategy
.cache
.reference
.JournalDefaultCacheStrategy
;
22 import eu
.etaxonomy
.cdm
.strategy
.cache
.reference
.ReferenceBaseDefaultCacheStrategy
;
23 import eu
.etaxonomy
.cdm
.strategy
.cache
.reference
.ThesisDefaultCacheStrategy
;
25 public class ReferenceFactory
{
26 private static final Logger logger
= Logger
.getLogger(ReferenceFactory
.class);
31 * @deprecated //use static methods instead
33 public static ReferenceFactory
newInstance(){
34 return new ReferenceFactory();
37 public static ReferenceBase
newArticle(){
38 ReferenceBase
<ArticleDefaultCacheStrategy
> article
= new ReferenceBase(ReferenceType
.Article
);
39 article
.setCacheStrategy(ReferenceType
.Article
.getCacheStrategy());
43 public static ReferenceBase
newJournal(){
44 ReferenceBase
<JournalDefaultCacheStrategy
<ReferenceBase
>> journal
= new ReferenceBase(ReferenceType
.Journal
);
45 journal
.setCacheStrategy(ReferenceType
.Journal
.getCacheStrategy());
49 public static ReferenceBase
newBook(){
50 ReferenceBase
<BookDefaultCacheStrategy
<ReferenceBase
>> book
= new ReferenceBase
<BookDefaultCacheStrategy
<ReferenceBase
>>(ReferenceType
.Book
);
51 book
.setCacheStrategy(ReferenceType
.Book
.getCacheStrategy());
55 public static ReferenceBase
newThesis(){
56 ReferenceBase
<ThesisDefaultCacheStrategy
<ReferenceBase
>> thesis
= new ReferenceBase
<ThesisDefaultCacheStrategy
<ReferenceBase
>>(ReferenceType
.Thesis
);
57 thesis
.setCacheStrategy(ReferenceType
.Thesis
.getCacheStrategy());
61 public static ReferenceBase
newInProceedings(){
62 ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>> inProceedings
= new ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>>(ReferenceType
.InProceedings
);
63 inProceedings
.setCacheStrategy(ReferenceType
.InProceedings
.getCacheStrategy());
67 public static ReferenceBase
newProceedings(){
68 ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>> proceedings
= new ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>>(ReferenceType
.Proceedings
);
69 proceedings
.setCacheStrategy(ReferenceType
.Proceedings
.getCacheStrategy());
73 public static ReferenceBase
newBookSection(){
74 ReferenceBase
<BookSectionDefaultCacheStrategy
<ReferenceBase
>> bookSection
= new ReferenceBase
<BookSectionDefaultCacheStrategy
<ReferenceBase
>>(ReferenceType
.BookSection
);
75 bookSection
.setCacheStrategy(ReferenceType
.BookSection
.getCacheStrategy());
79 public static ReferenceBase
newCdDvd(){
80 ReferenceBase
<CdDvdDefaultCacheStrategy
<ReferenceBase
>> cdDvd
= new ReferenceBase
<CdDvdDefaultCacheStrategy
<ReferenceBase
>>(ReferenceType
.CdDvd
);
81 cdDvd
.setCacheStrategy(ReferenceType
.CdDvd
.getCacheStrategy());
85 public static ReferenceBase
newGeneric(){
86 ReferenceBase generic
= new ReferenceBase
<GenericDefaultCacheStrategy
>(ReferenceType
.Generic
);
87 generic
.setCacheStrategy(ReferenceType
.Generic
.getCacheStrategy());
91 public static ReferenceBase
newMap(){
92 ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>> map
= new ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>>(ReferenceType
.Map
);
93 map
.setCacheStrategy(ReferenceType
.Map
.getCacheStrategy());
98 public static ReferenceBase
newReport(){
99 ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>> report
= new ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>>(ReferenceType
.Report
);
100 report
.setCacheStrategy(ReferenceType
.Report
.getCacheStrategy());
105 public static ReferenceBase
newWebPage(){
106 ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>> webPage
= new ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>>(ReferenceType
.WebPage
);
107 webPage
.setCacheStrategy(ReferenceType
.WebPage
.getCacheStrategy());
111 public static ReferenceBase
newDatabase(){
112 ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>> db
= new ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>>(ReferenceType
.Database
);
113 db
.setCacheStrategy(ReferenceType
.Database
.getCacheStrategy());
119 * Creates a new empty print series instance.
121 public static ReferenceBase
newPrintSeries() {
122 ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>> refBase
= new ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>>(ReferenceType
.PrintSeries
);
123 refBase
.setCacheStrategy(ReferenceType
.PrintSeries
.getCacheStrategy());
128 * Creates a new print series instance with a given title string.
130 public static ReferenceBase
newPrintSeries(String series
) {
131 ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>> refBase
= newPrintSeries();
132 refBase
.setCacheStrategy(ReferenceType
.PrintSeries
.getCacheStrategy());
136 public ReferenceBase
newBookSection(ReferenceBase book
, Person partAuthor
,
137 String sectionTitle
, String pages
) {
138 ReferenceBase bookSection
= newBookSection();
139 bookSection
.setAuthorTeam(partAuthor
);
140 bookSection
.setTitle(sectionTitle
);
141 bookSection
.setPages(pages
);
145 public static ReferenceBase
newArticle(ReferenceBase inJournal
, Person partAuthor
,
146 String title
, String pages
, String series
, String volume
, TimePeriod datePublished
) {
147 ReferenceBase article
= newArticle();
148 article
.setInReference(inJournal
);
149 article
.setAuthorTeam(partAuthor
);
150 article
.setTitle(title
);
151 article
.setPages(pages
);
152 article
.setVolume(volume
);
153 article
.setDatePublished(datePublished
);
158 * Returns a new reference for the according reference type. If reference type is <code>null</code>,
159 * <code>null</code> is returned.
160 * @param referenceType
163 public static ReferenceBase
newReference(ReferenceType referenceType
) {
164 if (referenceType
== null){
167 switch(referenceType
){
173 return newBookSection();
177 return newDatabase();
179 return newInProceedings();
184 case PersonalCommunication
:
185 return newPersonalCommunication();
187 return newPrintSeries();
189 return newProceedings();
201 logger
.warn("Unknown reference type " + referenceType
.getMessage() + ". Created generic reference instead.");
206 public static ReferenceBase
newPersonalCommunication() {
207 ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>> personalCommunication
= new ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>>(ReferenceType
.PersonalCommunication
);
208 personalCommunication
.setCacheStrategy(ReferenceType
.PersonalCommunication
.getCacheStrategy());
209 return personalCommunication
;
212 public static ReferenceBase
newPatent() {
213 ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>> patent
= new ReferenceBase
<ReferenceBaseDefaultCacheStrategy
<ReferenceBase
>>(ReferenceType
.Patent
);
214 patent
.setCacheStrategy(ReferenceType
.Patent
.getCacheStrategy());