AT: commiting latest changes to the Palm Use data extension
authora.theys <a.theys@localhost>
Thu, 2 Feb 2012 09:56:50 +0000 (09:56 +0000)
committera.theys <a.theys@localhost>
Thu, 2 Feb 2012 09:56:50 +0000 (09:56 +0000)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/userecords/UseRecordDetailElement.java

index faa850ffe7c9b7b246f8c556109016aec122eae8..67a3101dc7d6e954d3652893b34789af8fea89ff 100644 (file)
@@ -88,66 +88,108 @@ public class UseRecordDetailElement extends
 \r
                List<State> termsUseCategory = setUseCategoryComboTerms(TermStore.getTerms(State.class, null, false));\r
                combo_UseCategory.setTerms(termsUseCategory);\r
-               combo_UseCategory.setSelection(useCategorySelection());\r
+               combo_UseCategory.setSelection(stateSelection("Use Category"));\r
                \r
                List<State> termsSubCategory = setUseCategoryComboTerms(TermStore.getTerms(State.class, null, false), combo_UseCategory.getSelection());\r
                \r
                if (termsSubCategory != null) {\r
                        \r
                        combo_UseSubCategory.setTerms(termsSubCategory);\r
-                       combo_UseSubCategory.setSelection(useSubCategorySelection());\r
+                       combo_UseSubCategory.setSelection(stateSelection("Use SubCategory"));\r
                        combo_UseSubCategory.setEnabled(true);\r
                }\r
                else {\r
                        combo_UseSubCategory.setEnabled(false);\r
                }\r
-               List<Modifier> plantPartsToAdd = setPlantPartsComboTerms(TermStore.getTerms(Modifier.class, null, false));\r
+               \r
+               List<Modifier> plantPartsToAdd = setModifierComboTerms(TermStore.getTerms(Modifier.class, null, false), "Plant Part");\r
                combo_PlantPart.setTerms(plantPartsToAdd);\r
-               combo_PlantPart.setSelection(plantPartSelection());\r
+               combo_PlantPart.setSelection(modifierSelection("Plant Part"));\r
                \r
-               List<Modifier> countriesToAdd = setCountryComboTerms(TermStore.getTerms(Modifier.class, null, false));\r
+               List<Modifier> countriesToAdd = setModifierComboTerms(TermStore.getTerms(Modifier.class, null, false), "Country");\r
                combo_Country.setTerms(countriesToAdd);\r
-               combo_Country.setSelection(countrySelection());\r
+               combo_Country.setSelection(modifierSelection("Country"));\r
                \r
-               List<Modifier> humanGroupToAdd = setHumanGroupComboTerms(TermStore.getTerms(Modifier.class, null, false));\r
+               List<Modifier> humanGroupToAdd = setModifierComboTerms(TermStore.getTerms(Modifier.class, null, false), "Human Group");\r
                combo_HumanGroup.setTerms(humanGroupToAdd);\r
-               combo_HumanGroup.setSelection(humanGroupSelection());\r
+               combo_HumanGroup.setSelection(modifierSelection("Human Group"));\r
                \r
                List<Modifier> ethnicGroupToAdd = setEthnicGroupComboTerms(TermStore.getTerms(Modifier.class, null, false), combo_HumanGroup.getSelection());\r
                if (ethnicGroupToAdd != null) {\r
                        combo_EthnicGroup.setTerms(ethnicGroupToAdd);\r
-                       combo_EthnicGroup.setSelection(ethnicGroupSelection());\r
+                       combo_EthnicGroup.setSelection(modifierSelection("Ethnic Group"));\r
                        combo_EthnicGroup.setEnabled(true);\r
                } else {\r
                        combo_EthnicGroup.setEnabled(false);\r
                }\r
 \r
-               // getPreferredTerms(State.class));\r
-               // UseSubCategory_stateData =\r
-               // formFactory.createTermComboElement(State.class, this,\r
-               // "Use Sub Category", null , style);\r
-               // createEntityDetailSection(EntityDetailType.USE_CAT,\r
-               // getConversationHolder(), formElement, Section.EXPANDED);\r
-               // UseSubCategory_stateData = (UseSubCategorySection)\r
-               // formFactory.createEntityDetailSection(EntityDetailType.USE_SUBCAT,\r
-               // getConversationHolder(), formElement,Section.EXPANDED);\r
-               // UseCategory_stateData.setEntity(entity);\r
-               // UseSubCategory_stateData.setEntity(entity);\r
-               // UseCategory_stateData.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2,\r
-               // 1));\r
-               // UseSubCategory_stateData.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2,\r
-               // 1));\r
-\r
        }\r
 \r
+       private Modifier modifierSelection(String comboCategory) {\r
+               if(!getEntity().getModifiers().isEmpty()) {\r
+                       for (Modifier modifier : getEntity().getModifiers()) {\r
+                               if (modifier.getMarkers() != null) {\r
+                                       for (Marker marker : modifier.getMarkers()) {\r
+                                               if(marker.getMarkerType().getTitleCache().equals(comboCategory)) {\r
+                                                       return modifier;\r
+                                               }\r
+                                               else {\r
+                                                       return null;\r
+                                               }\r
+                                       }\r
+                               }\r
+                               else {\r
+                                       return null;\r
+                               }\r
+                                       \r
+                       }\r
+               } else {\r
+                       return null;\r
+               }\r
+               return null;\r
+               \r
+       }\r
+       \r
+       private State stateSelection(String comboCategory) {\r
+               if (!getEntity().getStates().isEmpty()) {\r
+                       for (StateData statedata : getEntity().getStates()) {\r
+                               if (statedata.getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {\r
+                                       if(statedata.getModifyingText().get(CdmStore.getDefaultLanguage()).getText() == comboCategory) {\r
+                                               if(statedata.getState() !=null) {\r
+                                                       return statedata.getState();\r
+                                               }\r
+                                       }\r
+                               }                               \r
+                       }\r
+               }\r
+               else {\r
+                       return null;\r
+               }\r
+               return null;\r
+               \r
+       }\r
        \r
+       private List<Modifier> setModifierComboTerms(List<Modifier> listOfTerms, String modType) {\r
+               List<Modifier> termsToAdd = new ArrayList<Modifier>();\r
+               for (Modifier term : listOfTerms) {\r
+\r
+                       if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals(modType))) {\r
+                               termsToAdd.add(term);\r
+                       }\r
+                       else if ((term.getVocabulary() != null) && (term.getVocabulary().getTitleCache().equals(modType))) {\r
+                               termsToAdd.add(term);\r
+                       }\r
+               }\r
+               \r
+               return termsToAdd;\r
+       }\r
        \r
        private Modifier plantPartSelection() {\r
                /*if(!getEntity().getModifiers().isEmpty()) {\r
                        for (Modifier modifier : getEntity().getModifiers()) {\r
                                if (modifier.getMarkers() != null) {\r
                                        for (Marker marker : modifier.getMarkers()) {\r
-                                               if(marker.getMarkerType().getTitleCache().equals("PlantPart")) {\r
+                                               if(marker.getMarkerType().getTitleCache().equals("Plant Part")) {\r
                                                        return modifier;\r
                                                }\r
                                                else {\r
@@ -349,6 +391,9 @@ public class UseRecordDetailElement extends
                \r
        }\r
 \r
+       \r
+       \r
+       \r
        private List<Modifier> setPlantPartsComboTerms(List<Modifier> listOfTerms) {\r
                List<Modifier> termsToAdd = new ArrayList<Modifier>();\r
                for (Modifier term : listOfTerms) {\r
@@ -500,6 +545,7 @@ public class UseRecordDetailElement extends
                 */\r
                if (eventSource == combo_UseCategory) {\r
                        if (combo_UseCategory.getSelection() != null) {\r
+                               boolean isChanged = false;\r
                                if (!getEntity().getStates().isEmpty()) {\r
                                        for (StateData existingStateData : getEntity().getStates()) {\r
                                                Map<Language, LanguageString> modifyingText = existingStateData\r
@@ -514,7 +560,9 @@ public class UseRecordDetailElement extends
                                                                //stateData.addModifyingText("Use Category", CdmStore.getDefaultLanguage());\r
                                                                stateData.putModifyingText(CdmStore.getDefaultLanguage(),"Use Category");\r
                                                                getEntity().addState(stateData);\r
-                                                       } else {\r
+                                                               isChanged = true;\r
+                                                       } \r
+                                                       /*else {\r
                                                                StateData stateData = StateData\r
                                                                                .NewInstance(combo_UseCategory.getSelection());\r
                                                                stateData.setState(combo_UseCategory.getSelection());\r
@@ -530,10 +578,13 @@ public class UseRecordDetailElement extends
                                                        //stateData.addModifyingText("Use Category", CdmStore.getDefaultLanguage());\r
                                                        stateData.putModifyingText(CdmStore.getDefaultLanguage(), "Use Category");\r
                                                        getEntity().addState(stateData);\r
+                                               }*/\r
                                                }\r
                                        }\r
                                }\r
-                               else {\r
+                               \r
+                               \r
+                               if (isChanged == false) {\r
                                        StateData stateData = StateData\r
                                                        .NewInstance(combo_UseCategory.getSelection());\r
                                        stateData.setState(combo_UseCategory.getSelection());\r
@@ -550,6 +601,7 @@ public class UseRecordDetailElement extends
                }\r
                if (eventSource == combo_UseSubCategory) {\r
                        if (combo_UseSubCategory.getSelection() != null) {\r
+                               boolean isChanged = false;\r
                                if (!getEntity().getStates().isEmpty()) {\r
                                        for (StateData existingStateData : getEntity().getStates()) {\r
                                                Map<Language, LanguageString> modifyingText = existingStateData\r
@@ -562,14 +614,16 @@ public class UseRecordDetailElement extends
                                                                StateData stateData = StateData.NewInstance(combo_UseSubCategory.getSelection());\r
                                                                stateData.setState(combo_UseSubCategory.getSelection());\r
                                                                //stateData.addModifyingText("Use SubCategory", CdmStore.getDefaultLanguage());\r
-                                                               //stateData.putModifyingText(CdmStore.getDefaultLanguage(),"Use SubCategory");\r
+                                                               stateData.putModifyingText(CdmStore.getDefaultLanguage(),"Use SubCategory");\r
                                                                getEntity().addState(stateData);\r
-                                                       } else {\r
+                                                               isChanged = true;\r
+                                                       } \r
+                                                       /*else {\r
                                                                StateData stateData = StateData\r
                                                                                .NewInstance(combo_UseSubCategory.getSelection());\r
                                                                stateData.setState(combo_UseSubCategory.getSelection());\r
                                                                //stateData.addModifyingText("Use SubCategory", CdmStore.getDefaultLanguage());\r
-                                                               //stateData.putModifyingText(CdmStore.getDefaultLanguage(),"Use SubCategory");\r
+                                                               stateData.putModifyingText(CdmStore.getDefaultLanguage(),"Use SubCategory");\r
                                                                getEntity().addState(stateData);\r
                                                        }\r
        \r
@@ -578,12 +632,14 @@ public class UseRecordDetailElement extends
                                                                        .NewInstance(combo_UseSubCategory.getSelection());\r
                                                        stateData.setState(combo_UseSubCategory.getSelection());\r
                                                        //stateData.addModifyingText("Use SubCategory", CdmStore.getDefaultLanguage());\r
-                                                       //stateData.putModifyingText(CdmStore.getDefaultLanguage(), "Use SubCategory");\r
+                                                       stateData.putModifyingText(CdmStore.getDefaultLanguage(), "Use SubCategory");\r
                                                        getEntity().addState(stateData);\r
+                                               }*/\r
                                                }\r
                                        }\r
                                }\r
-                               else {\r
+                               \r
+                               if (isChanged == false){\r
                                        StateData stateData = StateData\r
                                                        .NewInstance(combo_UseSubCategory.getSelection());\r
                                        stateData.setState(combo_UseSubCategory.getSelection());\r
@@ -592,6 +648,7 @@ public class UseRecordDetailElement extends
                                        //IService object = (IService) CdmStore.getCurrentApplicationConfiguration().getBean(IService.class.getName());\r
                                        //object.save(languageString);\r
                                        //stateData.putModifyingText(languageString);\r
+                                       stateData.putModifyingText(CdmStore.getDefaultLanguage(), "Use SubCategory");\r
                                        getEntity().addState(stateData);\r
                                }\r
        \r
@@ -599,44 +656,47 @@ public class UseRecordDetailElement extends
                }\r
                if (eventSource == combo_PlantPart) {\r
                        if (combo_PlantPart.getSelection() != null) {\r
+                               boolean isChanged = false;\r
+                               MarkerType markerType = MarkerType.NewInstance("Plant Part", "Plant Part", null);\r
                                Set<Modifier> modifiers = getEntity().getModifiers();\r
                                if(!modifiers.isEmpty()) {\r
                                        for (Modifier modifier : modifiers) {\r
                                                if (modifier.getMarkers() != null) {\r
                                                        for (Marker marker : modifier.getMarkers()) {\r
-                                                               if (marker.getMarkerType().getTitleCache().equals("PlantPart")) {\r
+                                                               if (marker.getMarkerType().getTitleCache().equals("Plant Part")) {\r
                                                                        getEntity().removeModifier(modifier);\r
                                                                        Modifier plantPart = combo_PlantPart.getSelection();\r
                                                                        plantPart.addMarker(marker);\r
                                                                        getEntity().addModifier(plantPart);\r
+                                                                       isChanged = true;\r
                                                                        //getEntity().addModifier(combo_PlantPart.getSelection());\r
                                                                } \r
-                                                               else {\r
-                                                                       MarkerType markerType = MarkerType.NewInstance("PlantPart", "PlantPart", null);\r
+                                                               /*else {\r
+                                                                       \r
                                                                        Marker markerPlantPart = Marker.NewInstance(markerType, false);\r
                                                                        Modifier plantPart = combo_PlantPart.getSelection();\r
                                                                        plantPart.addMarker(markerPlantPart);\r
                                                                        getEntity().addModifier(plantPart);\r
                                                                        //getEntity().addModifier(combo_PlantPart.getSelection());\r
-                                                               }\r
+                                                               }*/\r
                                                                        \r
                                                                        \r
                                                        }\r
                                                                \r
                                                }\r
-                                               else {\r
-                                                       MarkerType markerType = MarkerType.NewInstance("PlantPart", "PlantPart", null);\r
+                                               /*else {\r
+                                                       //MarkerType markerType = MarkerType.NewInstance("Plant Part", "Plant Part", null);\r
                                                        Marker marker = Marker.NewInstance(markerType, false);\r
                                                        Modifier plantPart = combo_PlantPart.getSelection();\r
                                                        plantPart.addMarker(marker);\r
                                                        getEntity().addModifier(plantPart);\r
                                                        //getEntity().addModifier(combo_PlantPart.getSelection());\r
-                                               }\r
+                                               }*/\r
                                                        \r
                                        }       \r
                                }\r
-                               else {\r
-                                       MarkerType markerType = MarkerType.NewInstance("PlantPart", "PlantPart", null);\r
+                               if(isChanged == false) {\r
+                                       //MarkerType markerType = MarkerType.NewInstance("Plant Part", "Plant Part", null);\r
                                        Marker marker = Marker.NewInstance(markerType, false);\r
                                        Modifier plantPart = combo_PlantPart.getSelection();\r
                                        plantPart.addMarker(marker);\r
@@ -647,146 +707,155 @@ public class UseRecordDetailElement extends
                }\r
                if (eventSource == combo_Country) {\r
                        if (combo_Country.getSelection() != null) {\r
+                               boolean isChanged = false;\r
+                               MarkerType markerType = MarkerType.NewInstance("Country", "Country", null);\r
                                Set<Modifier> modifiers = getEntity().getModifiers();\r
                                if(!modifiers.isEmpty()) {\r
                                        for (Modifier modifier : modifiers) {\r
                                                if (modifier.getMarkers() != null) {\r
                                                        for (Marker marker : modifier.getMarkers()) {\r
                                                                if (marker.getMarkerType().getTitleCache().equals("Country")) {\r
-                                                                       /*getEntity().removeModifier(modifier);\r
-                                                                       Modifier plantPart = combo_PlantPart.getSelection();\r
-                                                                       plantPart.addMarker(marker);\r
-                                                                       getEntity().addModifier(plantPart);*/\r
-                                                                       getEntity().addModifier(combo_Country.getSelection());\r
+                                                                       getEntity().removeModifier(modifier);\r
+                                                                       Modifier country = combo_Country.getSelection();\r
+                                                                       country.addMarker(marker);\r
+                                                                       getEntity().addModifier(country);\r
+                                                                       isChanged = true;\r
+                                                                       //getEntity().addModifier(combo_Country.getSelection());\r
                                                                } \r
-                                                               else {\r
-                                                                       /*MarkerType markerType = MarkerType.NewInstance("Country", "Country", null);\r
-                                                                       Marker markerPlantPart = Marker.NewInstance(markerType, false);\r
-                                                                       Modifier plantPart = combo_PlantPart.getSelection();\r
-                                                                       plantPart.addMarker(markerPlantPart);\r
-                                                                       getEntity().addModifier(plantPart);*/\r
-                                                                       getEntity().addModifier(combo_Country.getSelection());\r
-                                                               }\r
+                                                               /*else {\r
+                                                                       \r
+                                                                       Marker markerCountry = Marker.NewInstance(markerType, false);\r
+                                                                       Modifier country = combo_Country.getSelection();\r
+                                                                       country.addMarker(markerCountry);\r
+                                                                       getEntity().addModifier(country);\r
+                                                                       //getEntity().addModifier(combo_Country.getSelection());\r
+                                                               }*/\r
                                                                        \r
                                                                        \r
                                                        }\r
                                                                \r
                                                }\r
-                                               else {\r
-                                                       /*MarkerType markerType = MarkerType.NewInstance("Country", "Country", null);\r
+                                               /*else {\r
+                                                       //MarkerType markerType = MarkerType.NewInstance("Country", "Country", null);\r
                                                        Marker marker = Marker.NewInstance(markerType, false);\r
-                                                       Modifier plantPart = combo_PlantPart.getSelection();\r
-                                                       plantPart.addMarker(marker);\r
-                                                       getEntity().addModifier(plantPart);*/\r
-                                                       getEntity().addModifier(combo_Country.getSelection());\r
-                                               }\r
+                                                       Modifier country = combo_Country.getSelection();\r
+                                                       country.addMarker(marker);\r
+                                                       getEntity().addModifier(country);\r
+                                                       //getEntity().addModifier(combo_Country.getSelection());\r
+                                               }*/\r
                                                        \r
                                        }       \r
                                }\r
-                               else {\r
-                                       /*MarkerType markerType = MarkerType.NewInstance("Country", "Country", null);\r
+                               if (isChanged == false) {\r
+                                       //MarkerType markerType = MarkerType.NewInstance("Country", "Country", null);\r
                                        Marker marker = Marker.NewInstance(markerType, false);\r
-                                       Modifier plantPart = combo_PlantPart.getSelection();\r
-                                       plantPart.addMarker(marker);\r
-                                       getEntity().addModifier(plantPart);*/\r
-                                       getEntity().addModifier(combo_Country.getSelection());\r
+                                       Modifier country = combo_Country.getSelection();\r
+                                       country.addMarker(marker);\r
+                                       getEntity().addModifier(country);\r
+                                       //getEntity().addModifier(combo_Country.getSelection());\r
                                }\r
                        }\r
                }\r
                if (eventSource == combo_HumanGroup) {\r
                        if (combo_HumanGroup.getSelection() != null) {\r
+                               boolean isChanged = false;\r
+                               MarkerType markerType = MarkerType.NewInstance("Human Group", "Human Group", null);\r
                                Set<Modifier> modifiers = getEntity().getModifiers();\r
                                if(!modifiers.isEmpty()) {\r
                                        for (Modifier modifier : modifiers) {\r
                                                if (modifier.getMarkers() != null) {\r
                                                        for (Marker marker : modifier.getMarkers()) {\r
                                                                if (marker.getMarkerType().getTitleCache().equals("Human Group")) {\r
-                                                                       /*getEntity().removeModifier(modifier);\r
-                                                                       Modifier plantPart = combo_PlantPart.getSelection();\r
-                                                                       plantPart.addMarker(marker);\r
-                                                                       getEntity().addModifier(plantPart);*/\r
-                                                                       getEntity().addModifier(combo_HumanGroup.getSelection());\r
+                                                                       getEntity().removeModifier(modifier);\r
+                                                                       Modifier humanGroup = combo_HumanGroup.getSelection();\r
+                                                                       humanGroup.addMarker(marker);\r
+                                                                       getEntity().addModifier(humanGroup);\r
+                                                                       isChanged = true;\r
+                                                                       //getEntity().addModifier(combo_HumanGroup.getSelection());\r
                                                                } \r
-                                                               else {\r
-                                                                       /*MarkerType markerType = MarkerType.NewInstance("Human Group", "Human Group", null);\r
-                                                                       Marker markerPlantPart = Marker.NewInstance(markerType, false);\r
-                                                                       Modifier plantPart = combo_PlantPart.getSelection();\r
-                                                                       plantPart.addMarker(markerPlantPart);\r
-                                                                       getEntity().addModifier(plantPart);*/\r
-                                                                       getEntity().addModifier(combo_HumanGroup.getSelection());\r
-                                                               }\r
+                                                               /*else {\r
+                                                                       \r
+                                                                       Marker markerHumanGroup = Marker.NewInstance(markerType, false);\r
+                                                                       Modifier humanGroup = combo_HumanGroup.getSelection();\r
+                                                                       humanGroup.addMarker(markerHumanGroup);\r
+                                                                       getEntity().addModifier(humanGroup);\r
+                                                                       //getEntity().addModifier(combo_HumanGroup.getSelection());\r
+                                                               }*/\r
                                                                        \r
                                                                        \r
                                                        }\r
                                                                \r
                                                }\r
-                                               else {\r
-                                                       /*MarkerType markerType = MarkerType.NewInstance("Human Group", "Human Group", null);\r
+                                               /*else {\r
+                                                       //MarkerType markerType = MarkerType.NewInstance("Human Group", "Human Group", null);\r
                                                        Marker marker = Marker.NewInstance(markerType, false);\r
-                                                       Modifier plantPart = combo_PlantPart.getSelection();\r
-                                                       plantPart.addMarker(marker);\r
-                                                       getEntity().addModifier(plantPart);*/\r
-                                                       getEntity().addModifier(combo_HumanGroup.getSelection());\r
-                                               }\r
+                                                       Modifier humanGroup = combo_HumanGroup.getSelection();\r
+                                                       humanGroup.addMarker(marker);\r
+                                                       getEntity().addModifier(humanGroup);\r
+                                                       //getEntity().addModifier(combo_HumanGroup.getSelection());\r
+                                               }*/\r
                                                        \r
                                        }       \r
                                }\r
-                               else {\r
-                                       /*MarkerType markerType = MarkerType.NewInstance("Human Group", "Human Group", null);\r
+                               if(isChanged == false){\r
+                                       //MarkerType markerType = MarkerType.NewInstance("Human Group", "Human Group", null);\r
                                        Marker marker = Marker.NewInstance(markerType, false);\r
-                                       Modifier plantPart = combo_PlantPart.getSelection();\r
-                                       plantPart.addMarker(marker);\r
-                                       getEntity().addModifier(plantPart);*/\r
-                                       getEntity().addModifier(combo_HumanGroup.getSelection());\r
+                                       Modifier humanGroup = combo_HumanGroup.getSelection();\r
+                                       humanGroup.addMarker(marker);\r
+                                       getEntity().addModifier(humanGroup);\r
+                                       //getEntity().addModifier(combo_HumanGroup.getSelection());\r
                                }\r
                        }\r
                        combo_EthnicGroup.setEnabled(true);\r
                }\r
                if (eventSource == combo_EthnicGroup) {\r
                        if (combo_EthnicGroup.getSelection() != null) {\r
+                               boolean isChanged = false;\r
+                               MarkerType markerType = MarkerType.NewInstance("Ethnic Group", "Ethnic Group", null);\r
                                Set<Modifier> modifiers = getEntity().getModifiers();\r
                                if(!modifiers.isEmpty()) {\r
                                        for (Modifier modifier : modifiers) {\r
                                                if (modifier.getMarkers() != null) {\r
                                                        for (Marker marker : modifier.getMarkers()) {\r
                                                                if (marker.getMarkerType().getTitleCache().equals("Ethnic Group")) {\r
-                                                                       /*getEntity().removeModifier(modifier);\r
-                                                                       Modifier plantPart = combo_PlantPart.getSelection();\r
-                                                                       plantPart.addMarker(marker);\r
-                                                                       getEntity().addModifier(plantPart);*/\r
-                                                                       getEntity().addModifier(combo_EthnicGroup.getSelection());\r
+                                                                       getEntity().removeModifier(modifier);\r
+                                                                       Modifier ethnicGroup = combo_EthnicGroup.getSelection();\r
+                                                                       ethnicGroup.addMarker(marker);\r
+                                                                       getEntity().addModifier(ethnicGroup);\r
+                                                                       isChanged = true;\r
+                                                                       //getEntity().addModifier(combo_EthnicGroup.getSelection());\r
                                                                } \r
-                                                               else {\r
-                                                                       /*MarkerType markerType = MarkerType.NewInstance("Ethnic Group", "Ethnic Group", null);\r
-                                                                       Marker markerPlantPart = Marker.NewInstance(markerType, false);\r
-                                                                       Modifier plantPart = combo_PlantPart.getSelection();\r
-                                                                       plantPart.addMarker(markerPlantPart);\r
-                                                                       getEntity().addModifier(plantPart);*/\r
-                                                                       getEntity().addModifier(combo_EthnicGroup.getSelection());\r
-                                                               }\r
+                                                               /*else {\r
+                                                                       \r
+                                                                       Marker markerEthnicGroup = Marker.NewInstance(markerType, false);\r
+                                                                       Modifier ethnicGroup = combo_EthnicGroup.getSelection();\r
+                                                                       ethnicGroup.addMarker(markerEthnicGroup);\r
+                                                                       getEntity().addModifier(ethnicGroup);\r
+                                                                       //getEntity().addModifier(combo_EthnicGroup.getSelection());\r
+                                                               }*/\r
                                                                        \r
                                                                        \r
                                                        }\r
                                                                \r
                                                }\r
-                                               else {\r
-                                                       /*MarkerType markerType = MarkerType.NewInstance("Ethnic Group", "Ethnic Group", null);\r
+                                               /*else {\r
+                                                       //MarkerType markerType = MarkerType.NewInstance("Ethnic Group", "Ethnic Group", null);\r
                                                        Marker marker = Marker.NewInstance(markerType, false);\r
-                                                       Modifier plantPart = combo_PlantPart.getSelection();\r
-                                                       plantPart.addMarker(marker);\r
-                                                       getEntity().addModifier(plantPart);*/\r
-                                                       getEntity().addModifier(combo_EthnicGroup.getSelection());\r
-                                               }\r
+                                                       Modifier ethnicGroup = combo_EthnicGroup.getSelection();\r
+                                                       ethnicGroup.addMarker(marker);\r
+                                                       getEntity().addModifier(ethnicGroup);\r
+                                                       //getEntity().addModifier(combo_EthnicGroup.getSelection());\r
+                                               }*/\r
                                                        \r
                                        }       \r
                                }\r
-                               else {\r
-                                       /*MarkerType markerType = MarkerType.NewInstance("Ethnic Group", "Ethnic Group", null);\r
+                               if(isChanged == false) {\r
+                                       //MarkerType markerType = MarkerType.NewInstance("Ethnic Group", "Ethnic Group", null);\r
                                        Marker marker = Marker.NewInstance(markerType, false);\r
-                                       Modifier plantPart = combo_PlantPart.getSelection();\r
-                                       plantPart.addMarker(marker);\r
-                                       getEntity().addModifier(plantPart);*/\r
-                                       getEntity().addModifier(combo_EthnicGroup.getSelection());\r
+                                       Modifier ethnicGroup = combo_EthnicGroup.getSelection();\r
+                                       ethnicGroup.addMarker(marker);\r
+                                       getEntity().addModifier(ethnicGroup);\r
+                                       //getEntity().addModifier(combo_EthnicGroup.getSelection());\r
                                }\r
                        }\r
                }\r
@@ -812,7 +881,31 @@ public class UseRecordDetailElement extends
                        if (object == eventSource) {\r
                                State selectedUseCategory = combo_UseCategory.getSelection();\r
                                if (selectedUseCategory != null) {\r
-                                       combo_UseSubCategory.setTerms(setUseCategoryComboTerms(TermStore.getTerms(State.class, null, false),selectedUseCategory));\r
+                                       if (!getEntity().getStates().isEmpty()) {\r
+                                               for (StateData existingStateData : getEntity().getStates()) {\r
+                                                       Map<Language, LanguageString> modifyingText = existingStateData\r
+                                                                       .getModifyingText();\r
+               \r
+                                                       if (modifyingText.get(CdmStore.getDefaultLanguage()) != null) {\r
+                                                               if (modifyingText.get(CdmStore.getDefaultLanguage())\r
+                                                                               .getText() == "Use SubCategory") {\r
+                                                                       getEntity().removeState(existingStateData);\r
+                                                                       combo_UseSubCategory.setSelected(false);\r
+                                                                       combo_UseSubCategory.getSelection();\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                                       \r
+                                       List<State> newSubCategories = setUseCategoryComboTerms(TermStore.getTerms(State.class, null, false),selectedUseCategory);\r
+                                       combo_UseSubCategory.setTerms(newSubCategories);\r
+                                       State emptyState = State.NewInstance();\r
+                                       combo_UseSubCategory.setSelection(emptyState);\r
+                                       combo_UseSubCategory.setSelection(newSubCategories.get(0));\r
+                                       combo_UseSubCategory.setSelection(null);\r
+                                       \r
+                                       combo_UseSubCategory.setTerms(newSubCategories);\r
+                                       \r
                                }\r
                        }\r
                }\r