2 * Copyright (C) 2007 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
.common
;
13 import org
.apache
.log4j
.Logger
;
14 import org
.springframework
.stereotype
.Component
;
15 import au
.com
.bytecode
.opencsv
.CSVWriter
;
19 import javax
.persistence
.*;
22 * list of languages according to current internet best practices as given by IANA
23 * or ISO codes. http://www.ietf.org/rfc/rfc4646.txt
24 * http://www.loc.gov/standards/iso639-2/php/English_list.php
27 * @created 08-Nov-2007 13:06:31
31 public class Language
extends DefinedTermBase
{
32 static Logger logger
= Logger
.getLogger(Language
.class);
34 private static final UUID uuidChinese
= UUID
.fromString("a9fc2782-5b2a-466f-b9c3-64d9ca6614c4");
35 public static final UUID uuidEnglish
= UUID
.fromString("e9f8cdb7-6819-44e8-95d3-e2d0690c3523");
36 private static final UUID uuidSpanish
= UUID
.fromString("511d8125-f5e6-445d-aee2-6327375238be");
37 private static final UUID uuidHindi
= UUID
.fromString("0a1d9d1d-135d-4575-b172-669b51673c39");
38 private static final UUID uuidArabic
= UUID
.fromString("4d3ec2eb-536f-4aab-81c5-34e37a3edbba");
39 private static final UUID uuidRussian
= UUID
.fromString("64ea9354-cbf8-40de-9f6e-387d24896f50");
40 private static final UUID uuidPortuguese
= UUID
.fromString("c2c08339-2405-4d7d-bd25-cbe01fb7ce09");
41 private static final UUID uuidJapanese
= UUID
.fromString("6778c7fb-c195-4dc1-ae3f-164201314e51");
42 private static final UUID uuidGerman
= UUID
.fromString("d1131746-e58b-4e80-a865-f5182c9c3073");
43 private static final UUID uuidFrench
= UUID
.fromString("7759a1d8-a5ea-454a-8c93-1dcfaae8cc21");
44 private static final UUID uuidItalian
= UUID
.fromString("fecbf0c7-fea9-465b-8a16-950517c5c0c4");
45 private static final UUID uuidDutch
= UUID
.fromString("9965d79a-acf9-4921-a2c0-863b8c16c056");
46 private static final UUID uuidPolish
= UUID
.fromString("3fdca387-f1b0-4ec1-808f-1bc3dc482194");
48 public static Language
NewInstance(){
49 return new Language();
52 public static Language
NewInstance(UUID uuid
){
53 return new Language(uuid
);
57 private char[] iso639_1
= new char[2];
58 private char[] iso639_2
= new char[3];
64 public Language(UUID uuid
) {
68 public Language(char[] iso639_1
, char[] iso639_2
, String englishLabel
, String frenchLabel
) {
70 this.iso639_1
=iso639_1
;
71 this.iso639_2
=iso639_2
;
72 this.addRepresentation(new Representation(englishLabel
, String
.valueOf(iso639_2
), Language
.ENGLISH()));
73 this.addRepresentation(new Representation(frenchLabel
, String
.valueOf(iso639_2
), Language
.FRENCH()));
75 public Language(String text
, String label
, Language lang
) {
77 this.addRepresentation(new Representation(text
,label
,lang
));
79 public Language(String label
, String text
) {
80 this(label
,text
, DEFAULT());
83 public static final Language
getByUuid(UUID uuid
){
84 return (Language
)findByUuid(uuid
);
88 public static final Language
DEFAULT(){
93 public static final Language
CHINESE(){
94 return getByUuid(uuidChinese
);
97 public static final Language
ENGLISH(){
98 return getByUuid(uuidEnglish
);
101 public static final Language
SPANISH(){
102 return getByUuid(uuidSpanish
);
105 public static final Language
HINDI(){
106 return getByUuid(uuidHindi
);
109 public static final Language
ARABIC(){
110 return getByUuid(uuidArabic
);
113 public static final Language
RUSSIAN(){
114 return getByUuid(uuidRussian
);
117 public static final Language
PORTUGUESE(){
118 return getByUuid(uuidPortuguese
);
121 public static final Language
JAPANESE(){
122 return getByUuid(uuidJapanese
);
125 public static final Language
GERMAN(){
126 return getByUuid(uuidGerman
);
129 public static final Language
FRENCH(){
130 return getByUuid(uuidFrench
);
133 public static final Language
ITALIAN(){
134 return getByUuid(uuidItalian
);
137 public static final Language
DUTCH(){
138 return getByUuid(uuidDutch
);
141 public static final Language
POLISH(){
142 return getByUuid(uuidPolish
);
146 public ILoadableTerm
readCsvLine(List csvLine
) {
147 ILoadableTerm result
;
148 if ( UUID
.fromString(csvLine
.get(0).toString()).equals(DEFAULT().getUuid()) && this != DEFAULT() ){
150 result
.readCsvLine(csvLine
);
152 // read UUID, URI, english label+description
153 List
<String
> csvLineString
= csvLine
;
155 super.readCsvLine(csvLine
);
157 this.iso639_1
=csvLineString
.get(4).trim().toCharArray();
158 this.iso639_2
=csvLineString
.get(5).trim().toCharArray();
163 public void writeCsvLine(CSVWriter writer
) {
164 String
[] line
= new String
[6];
165 line
[0] = getUuid().toString();
167 line
[2] = getLabel(Language
.ENGLISH());
168 line
[3] = getDescription(Language
.ENGLISH());
169 line
[4] = String
.valueOf(this.iso639_1
);
170 line
[5] = String
.valueOf(this.iso639_2
);
171 writer
.writeNext(line
);