001: /***************************************************************
002: * This file is part of the [fleXive](R) project.
003: *
004: * Copyright (c) 1999-2008
005: * UCS - unique computing solutions gmbh (http://www.ucs.at)
006: * All rights reserved
007: *
008: * The [fleXive](R) project is free software; you can redistribute
009: * it and/or modify it under the terms of the GNU General Public
010: * License as published by the Free Software Foundation;
011: * either version 2 of the License, or (at your option) any
012: * later version.
013: *
014: * The GNU General Public License can be found at
015: * http://www.gnu.org/copyleft/gpl.html.
016: * A copy is found in the textfile GPL.txt and important notices to the
017: * license from the author are found in LICENSE.txt distributed with
018: * these libraries.
019: *
020: * This library is distributed in the hope that it will be useful,
021: * but WITHOUT ANY WARRANTY; without even the implied warranty of
022: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023: * GNU General Public License for more details.
024: *
025: * For further information about UCS - unique computing solutions gmbh,
026: * please see the company website: http://www.ucs.at
027: *
028: * For further information about [fleXive](R), please see the
029: * project website: http://www.flexive.org
030: *
031: *
032: * This copyright notice MUST APPEAR in all copies of the file!
033: ***************************************************************/package com.flexive.shared.value;
034:
035: import com.flexive.shared.content.FxPK;
036:
037: import java.io.Serializable;
038: import java.util.Map;
039:
040: /**
041: * A multilingual content reference, internally represented as FxPK
042: *
043: * @author Markus Plesser (markus.plesser@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
044: * @see FxPK
045: */
046: public class FxReference extends
047: FxValue<ReferencedContent, FxReference> implements Serializable {
048:
049: private static final long serialVersionUID = 6559690796573041346L;
050: public final static ReferencedContent EMPTY = new ReferencedContent(
051: new FxPK());
052:
053: /**
054: * Constructor
055: *
056: * @param multiLanguage multilanguage value?
057: * @param defaultLanguage the default language
058: * @param translations HashMap containing language->translation mapping
059: */
060: public FxReference(boolean multiLanguage, long defaultLanguage,
061: Map<Long, ReferencedContent> translations) {
062: super (multiLanguage, defaultLanguage, translations);
063: }
064:
065: /**
066: * Constructor
067: *
068: * @param defaultLanguage the default language
069: * @param translations HashMap containing language->translation mapping
070: */
071: public FxReference(long defaultLanguage,
072: Map<Long, ReferencedContent> translations) {
073: super (defaultLanguage, translations);
074: }
075:
076: /**
077: * Constructor
078: *
079: * @param multiLanguage multilanguage value?
080: * @param translations HashMap containing language->translation mapping
081: */
082: public FxReference(boolean multiLanguage,
083: Map<Long, ReferencedContent> translations) {
084: super (multiLanguage, translations);
085: }
086:
087: /**
088: * Constructor
089: *
090: * @param translations HashMap containing language->translation mapping
091: */
092: public FxReference(Map<Long, ReferencedContent> translations) {
093: super (translations);
094: }
095:
096: /**
097: * Constructor - create value from an array of translations
098: *
099: * @param translations HashMap containing language->translation mapping
100: * @param pos position (index) in the array to use
101: */
102: public FxReference(Map<Long, ReferencedContent[]> translations,
103: int pos) {
104: super (translations, pos);
105: }
106:
107: /**
108: * Constructor
109: *
110: * @param multiLanguage multilanguage value?
111: * @param defaultLanguage the default language
112: * @param value single initializing value
113: */
114: public FxReference(boolean multiLanguage, long defaultLanguage,
115: ReferencedContent value) {
116: super (multiLanguage, defaultLanguage, value);
117: }
118:
119: /**
120: * Constructor
121: *
122: * @param defaultLanguage the default language
123: * @param value single initializing value
124: */
125: public FxReference(long defaultLanguage, ReferencedContent value) {
126: super (defaultLanguage, value);
127: }
128:
129: /**
130: * Constructor
131: *
132: * @param multiLanguage multilanguage value?
133: * @param value single initializing value
134: */
135: public FxReference(boolean multiLanguage, ReferencedContent value) {
136: super (multiLanguage, value);
137: }
138:
139: /**
140: * Constructor
141: *
142: * @param value single initializing value
143: */
144: public FxReference(ReferencedContent value) {
145: super (value);
146: }
147:
148: /**
149: * Constructor
150: *
151: * @param clone original FxValue to be cloned
152: */
153: public FxReference(FxValue<ReferencedContent, FxReference> clone) {
154: super (clone);
155: }
156:
157: /**
158: * {@inheritDoc}
159: */
160: @Override
161: public Class<ReferencedContent> getValueClass() {
162: return ReferencedContent.class;
163: }
164:
165: /**
166: * {@inheritDoc}
167: */
168: @Override
169: public ReferencedContent fromString(String value) {
170: return ReferencedContent.fromString(value);
171: }
172:
173: /** {@inheritDoc} */
174: @Override
175: public String getStringValue(ReferencedContent value) {
176: return value.toString();
177: }
178:
179: /**
180: * {@inheritDoc}
181: */
182: @Override
183: public FxReference copy() {
184: return new FxReference(this );
185: }
186:
187: @Override
188: public int compareTo(FxValue o) {
189: if (isEmpty() || o.isEmpty() || !(o instanceof FxReference)) {
190: return super .compareTo(o);
191: }
192: return getBestTranslation().compareTo(
193: ((FxReference) o).getBestTranslation());
194: }
195: }
|