Merging r13268 through r14040 from trunk/cdmlib into branches/cdmlib-unitils3
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / description / StateData.java
index c824312a201574050d17f0dbedffd300287c824c..9004e9e114a7b379c3f4e1c06275d174e0b973c4 100644 (file)
@@ -80,28 +80,51 @@ public class StateData extends VersionableEntity implements IModifiable, IMultiL
        @XmlElement(name = "Modifier")\r
        @ManyToMany(fetch = FetchType.LAZY)\r
        @Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE})\r
-       @NotNull // avoids creating a UNIQUE key for this field\r
+//     @NotNull // avoids creating a UNIQUE key for this field -> not needed for ManyToMany\r
        private Set<Modifier> modifiers = new HashSet<Modifier>();\r
        \r
        @XmlElement(name = "ModifyingText")\r
        @XmlJavaTypeAdapter(MultilanguageTextAdapter.class)\r
        @OneToMany(fetch = FetchType.LAZY)\r
+       @Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE})\r
        private Map<Language,LanguageString> modifyingText = new HashMap<Language,LanguageString>();\r
+\r
+//********************* FACTORY METHODS ************************\\r
        \r
        /** \r
-        * Class constructor: creates a new empty state data instance.\r
+        * Creates a new empty state data instance.\r
         */\r
-       public StateData() {\r
-               super();\r
+       public static StateData NewInstance(){\r
+               return new StateData();\r
        }\r
        \r
+       \r
        /** \r
         * Creates a new empty state data instance.\r
         */\r
-       public static StateData NewInstance(){\r
+       public static StateData NewInstance(State state){\r
                return new StateData();\r
        }\r
+       \r
+       /** \r
+        * Creates a new empty state data instance.\r
+        */\r
+       public static StateData NewInstance(String term, String label, String labelAbbrev){\r
+               State state = State.NewInstance(term, label, labelAbbrev);\r
+               return NewInstance(state);\r
+       }\r
+       \r
+//*************************** CONSTRUCTOR ************************\    \r
+       \r
+       /** \r
+        * Class constructor: creates a new empty state data instance.\r
+        */\r
+       public StateData() {\r
+               super();\r
+       }\r
 \r
+//************************** GETTER /SETTER *************************\\r
+       \r
        /** \r
         * Returns the {@link State state term} used in <i>this</i> state data.\r
         */\r
@@ -167,13 +190,34 @@ public class StateData extends VersionableEntity implements IModifiable, IMultiL
         * and the given {@link Language language} and adds it to the {@link MultilanguageText multilanguage text} \r
         * used to qualify the validity of <i>this</i> state data.\r
         * \r
+        * \r
         * @param text          the string describing the validity\r
         *                                      in a particular language\r
         * @param language      the language in which the text string is formulated\r
+        * \r
+        * @see                         #getModifyingText()\r
+        * @see                         #putModifyingText(LanguageString)\r
+        * @deprecated          should follow the put semantic of maps, this method will be removed in v4.0\r
+        *                                      Use the {@link #putModifyingText(Language, String) putModifyingText} method instead\r
+        */\r
+       @Deprecated\r
+       public LanguageString addModifyingText(String text, Language language){\r
+               return this.putModifyingText(language, text);\r
+       }\r
+       \r
+       /**\r
+        * Creates a {@link LanguageString language string} based on the given text string\r
+        * and the given {@link Language language} and adds it to the {@link MultilanguageText multilanguage text} \r
+        * used to qualify the validity of <i>this</i> state data.\r
+        * \r
+        * @param language      the language in which the text string is formulated\r
+        * @param text          the string describing the validity\r
+        *                                      in a particular language\r
+        * \r
         * @see                         #getModifyingText()\r
         * @see                         #addModifyingText(LanguageString)\r
         */\r
-       public LanguageString addModifyingText(String text, Language language){\r
+       public LanguageString putModifyingText(Language language, String text){\r
                return this.modifyingText.put(language, LanguageString.NewInstance(text, language));\r
        }\r
        /**\r
@@ -184,9 +228,26 @@ public class StateData extends VersionableEntity implements IModifiable, IMultiL
         * @param text  the language string describing the validity\r
         *                              in a particular language\r
         * @see                 #getModifyingText()\r
-        * @see                 #addModifyingText(String, Language)\r
+        * @see                 #putModifyingText(Language, String)\r
+        * @deprecated  should follow the put semantic of maps, this method will be removed in v4.0\r
+        *                              Use the {@link #putModifyingText(LanguagString) putModifyingText} method instead\r
         */\r
+       @Deprecated\r
        public LanguageString addModifyingText(LanguageString text){\r
+               return this.putModifyingText(text);\r
+       }\r
+       \r
+       /**\r
+        * Adds a translated {@link LanguageString text in a particular language}\r
+        * to the {@link MultilanguageText multilanguage text} used to qualify the validity\r
+        * of <i>this</i> state data.\r
+        * \r
+        * @param text  the language string describing the validity\r
+        *                              in a particular language\r
+        * @see                 #getModifyingText()\r
+        * @see                 #putModifyingText(Language, String)\r
+        */\r
+       public LanguageString putModifyingText(LanguageString text){\r
                return this.modifyingText.put(text.getLanguage(),text);\r
        }\r
        /** \r