Changeset 12669


Ignore:
Timestamp:
2006-09-05T11:56:22+12:00 (18 years ago)
Author:
kjdon
Message:

now inherit from AttributeContainer. for now, no add/delete attribute. only use teh attributes provided by the DTD: for set, have creator, contact, namespace, lastchanged, family, and name, description (lang dependent). for element, have name, and label, definition, comment (lang dependent). all are required atts, and all get added by default when you create a new set or new element

Location:
trunk/gli/src/org/greenstone/gatherer/gems
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/gli/src/org/greenstone/gatherer/gems/MetadataElementModel.java

    r12572 r12669  
    5454 */
    5555public class MetadataElementModel
    56   {
    57       private Element metadata_element;
    58       private ArrayList attributes;
    59       private ArrayList langDependAttributes;   
    60       private ArrayList children;
    61       private MetadataElementModel parent;
    62       private static ArrayList listeners = new ArrayList();
    63       private MetadataSetInfo metadataSetInfo;
    64       private String name;
    65       private static int count = 0;   
    66      
    67       public MetadataElementModel(){}
    68 
    69       public MetadataElementModel(MetadataSetInfo info){
    70       metadataSetInfo = info;
    71       attributes = new ArrayList();
    72       langDependAttributes = new ArrayList();
    73       children = new ArrayList();
    74       name = GEMSConstants.NEW_ELEMENT+(count++);       
    75       }
    76      
    77       public MetadataElementModel(Element metadataElement, MetadataSetInfo info){
    78       metadataSetInfo = info;
    79       metadata_element = metadataElement;
    80 
    81       children = new ArrayList();
    82       attributes = new ArrayList();
    83       langDependAttributes = new ArrayList();
    84      
    85       constructModel(metadata_element);     
    86      
    87       ArrayList child_elements =XMLTools.getChildElementsByTagName(metadata_element,GEMSConstants.ELEMENT_ELEMENT);
    88      
    89       for(int i=0;i<child_elements.size();i++){   
    90           Element element = (Element)child_elements.get(i);
    91               MetadataElementModel submodel = new MetadataElementModel(element,metadataSetInfo);
    92               submodel.setParent(this);   
    93           children.add(submodel);
    94       }
    95       }
    96      
    97       private void constructModel(Element meta_element){
    98       name = meta_element.getAttribute(GEMSConstants.NAME_ATTRIBUTE);
     56    extends AttributeContainer
     57{
     58    private Element metadata_element;
     59    private ArrayList children;
     60    private MetadataElementModel parent;
     61    private static ArrayList listeners = new ArrayList();
     62    private MetadataSetInfo metadataSetInfo;
     63    private String name;
     64    private static int count = 0;   
     65   
     66    public MetadataElementModel(){}
     67   
     68    // do we need this one?
     69    public MetadataElementModel(MetadataSetInfo info){
     70    this(info, null);
     71    }
     72   
     73    public MetadataElementModel(MetadataSetInfo info, String new_name){
     74    super(null, GEMSConstants.ELEMENT_LANG_DEPEND_ATTR_NAMES);
     75    required_attribute_names = GEMSConstants.ELEMENT_REQUIRED_ATTRIBUTES;
     76    metadataSetInfo = info;
     77    children = new ArrayList();
     78    if (new_name != null) {
     79        name = new_name;       
     80    } else {
     81        name = GEMSConstants.NEW_ELEMENT+(count++); 
     82    }
     83    // add name in as an attribute - lang independent
     84    Attribute attr = new Attribute(GEMSConstants.NAME_ATTRIBUTE, name, true);
     85    attributes.add(attr);
     86
     87    }
    9988     
    100       // common attributes
    101       ArrayList attribute_nodes =XMLTools.getChildElementsByTagName(metadata_element,GEMSConstants.ATTRIBUTE_ELEMENT);
    102      
    103       for(int i=0;i< attribute_nodes.size();i++){
    104           Element attr_element = (Element)attribute_nodes.get(i);
    105               String name = attr_element.getAttribute(GEMSConstants.NAME_ATTRIBUTE);
    106               String value =  XMLTools.getElementTextValue(attr_element);
    107               Attribute attr = new Attribute(name,value);
    108           attr.setLanguage(attr_element.getAttribute(GEMSConstants.LANGUAGE_ATTRIBUTE));
    109           attributes.add(attr);
    110                              
    111       }
    112    
    113       //language specific attribute 
    114       ArrayList language_elements =XMLTools.getChildElementsByTagName(metadata_element,GEMSConstants.LANGUAGE_ELEMENT);
    115      
    116       for(int i=0;i< language_elements.size();i++){
    117           Element language_element = (Element)language_elements.get(i);
    118               String lang = language_element.getAttribute(GEMSConstants.CODE_ATTRIBUTE);
    119           //Attribute element
    120           ArrayList subattributes =XMLTools.getChildElementsByTagName(language_element,GEMSConstants.ATTRIBUTE_ELEMENT);
     89    public MetadataElementModel(Element metadataElement, MetadataSetInfo info){
     90    super(null, null);
     91    required_attribute_names = GEMSConstants.ELEMENT_REQUIRED_ATTRIBUTES;
     92    language_dependent_attribute_names = GEMSConstants.ELEMENT_LANG_DEPEND_ATTR_NAMES;
     93    metadataSetInfo = info;
     94    metadata_element = metadataElement;
     95   
     96    children = new ArrayList();
     97   
     98    constructModel(metadata_element);     
     99   
     100    ArrayList child_elements =XMLTools.getChildElementsByTagName(metadata_element,GEMSConstants.ELEMENT_ELEMENT);
     101   
     102    for(int i=0;i<child_elements.size();i++){   
     103        Element element = (Element)child_elements.get(i);
     104        MetadataElementModel submodel = new MetadataElementModel(element,metadataSetInfo);
     105        submodel.setParent(this);   
     106        children.add(submodel);
     107    }
     108    }
     109   
     110    private void constructModel(Element meta_element){
     111    name = meta_element.getAttribute(GEMSConstants.NAME_ATTRIBUTE);
     112   
     113    // add name in as an attribute - the only lang independent one
     114    Attribute attr = new Attribute(GEMSConstants.NAME_ATTRIBUTE, name, true);
     115    attributes.add(attr);
     116
     117    // common attributes
     118    ArrayList attribute_nodes =XMLTools.getChildElementsByTagName(metadata_element,GEMSConstants.ATTRIBUTE_ELEMENT);
     119     
     120    for(int i=0;i< attribute_nodes.size();i++){
     121        Element attr_element = (Element)attribute_nodes.get(i);
     122        String name = attr_element.getAttribute(GEMSConstants.NAME_ATTRIBUTE).trim();
     123         
     124        String value =  XMLTools.getElementTextValue(attr_element);
     125        attr = new Attribute(name,value);
     126        String lang = attr_element.getAttribute(GEMSConstants.LANGUAGE_ATTRIBUTE);
     127        if (lang.equals("")) {
     128        // lang independent
     129        attr.setRequired(isAttributeRequired(name));
     130        attributes.add(attr);
     131        } else {
     132        attr.setLanguage(lang);
     133        attr.setRequired(isLangDependentAttributeRequired(name));
     134        language_dependent_attributes.add(attr);
     135        } 
     136    }
     137   
     138    //language specific attribute 
     139    ArrayList language_elements =XMLTools.getChildElementsByTagName(metadata_element,GEMSConstants.LANGUAGE_ELEMENT);
     140     
     141    for(int i=0;i< language_elements.size();i++){
     142        Element language_element = (Element)language_elements.get(i);
     143        String lang = language_element.getAttribute(GEMSConstants.CODE_ATTRIBUTE);
     144        //Attribute element
     145        ArrayList subattributes =XMLTools.getChildElementsByTagName(language_element,GEMSConstants.ATTRIBUTE_ELEMENT);
    121146         
    122           for(int j=0;j< subattributes.size();j++){
    123           Element attr_element = (Element)subattributes.get(j);
    124           String name = attr_element.getAttribute(GEMSConstants.NAME_ATTRIBUTE);
    125           String value =  XMLTools.getElementTextValue(attr_element);
    126           Attribute attr = new Attribute(name,value);
    127           attr.setLanguage(lang);
    128           langDependAttributes.add(attr);               
    129           }
     147        for(int j=0;j< subattributes.size();j++){
     148        Element attr_element = (Element)subattributes.get(j);
     149        String name = attr_element.getAttribute(GEMSConstants.NAME_ATTRIBUTE).trim();
     150        String value =  XMLTools.getElementTextValue(attr_element);
     151        attr = new Attribute(name,value, isLangDependentAttributeRequired(name));
     152        attr.setLanguage(lang);
     153        language_dependent_attributes.add(attr);               
     154        }
    130155         
    131       }
    132      
    133       }
    134      
    135       public void addMetadataElementListener(MetadataElementListener msl){
    136       if (!listeners.contains(msl))
    137           listeners.add(msl);   
    138       }
    139      
    140 
    141       public void removeMetadataElementListener(MetadataElementListener msl){
    142       listeners.remove(msl);   
    143       }
    144      
    145       public void removeAllMetadataElementListeners(){
    146       listeners.clear();
    147       }
     156    }
     157     
     158    }
     159     
     160    public void addMetadataElementListener(MetadataElementListener msl){
     161    if (!listeners.contains(msl))
     162        listeners.add(msl);   
     163    }
     164     
     165
     166    public void removeMetadataElementListener(MetadataElementListener msl){
     167    listeners.remove(msl);   
     168    }
     169     
     170    public void removeAllMetadataElementListeners(){
     171    listeners.clear();
     172    }
    148173     
    149       public ArrayList getAttributes(){
    150       return attributes;
    151       }
    152174     
    153175   
    154       public ArrayList getLangDependAttributes(){
    155       return langDependAttributes;
    156       }
    157 
    158       public Element getMetadataElement(){
    159       return metadata_element;
    160       }
    161      
    162       public void notifyListeners(boolean isDeleted){
    163       MetadataElementEvent mee = new MetadataElementEvent(this);
     176
     177    public Element getMetadataElement(){
     178    return metadata_element;
     179    }
     180     
     181    public void notifyListeners(boolean isDeleted){
     182
     183    MetadataElementEvent mee = new MetadataElementEvent(this);
    164184        if (!isDeleted){
    165185        mee = new MetadataElementEvent(this);
     
    172192        MetadataElementListener msl = (MetadataElementListener) listeners.get(i);
    173193            msl.metadataElementChanged(mee);         
    174      }
    175       }
    176 
    177       public ArrayList getChildElements(){
    178           return children;
    179       }
    180 
    181       public void addChild(MetadataElementModel child){
    182           metadataSetInfo.getMetadataSetModel().setChanged(true);
    183           child.setParent(this);
    184       children.add(child);
    185       }
    186 
    187       public void removeChild(MetadataElementModel element_model){
    188       metadataSetInfo.getMetadataSetModel().setChanged(true);
    189       children.remove(element_model);
    190       }
    191      
    192       public String getName(){
    193       return name;
    194       }
    195 
    196       public void setName(String new_name){
    197       metadataSetInfo.getMetadataSetModel().setChanged(true);
    198       name = new_name;
     194    }
     195    }
     196
     197    public ArrayList getChildElements(){
     198    return children;
     199    }
     200
     201    public void addChild(MetadataElementModel child){
     202    metadataSetInfo.getMetadataSetModel().setChanged(true);
     203    child.setParent(this);
     204    children.add(child);
     205    }
     206
     207    public void removeChild(MetadataElementModel element_model){
     208    metadataSetInfo.getMetadataSetModel().setChanged(true);
     209    children.remove(element_model);
     210    }
     211     
     212    public String getName(){
     213    return name;
     214    }
     215
     216    public void setName(String new_name){
     217    metadataSetInfo.getMetadataSetModel().setChanged(true);
     218    name = new_name;
    199219             
    200           MetadataSetModel metadata_model = metadataSetInfo.getMetadataSetModel();
    201       metadata_model.valueChanged();
    202       }
    203 
    204       public String getFullName(){
    205       if (parent == null){
    206           return metadataSetInfo.getNamespace() +"."+name;
    207       }
    208       else{
    209               return parent.getFullName() +"^"+ name;
    210       }
    211       }
    212 
    213       public void setParent(MetadataElementModel pr){
    214           parent = pr;
    215       }
    216 
    217       public MetadataElementModel getParent(){
    218           return parent;
    219       }
     220    MetadataSetModel metadata_model = metadataSetInfo.getMetadataSetModel();
     221    metadata_model.valueChanged();
     222    }
     223
     224    public String getFullName(){
     225    if (parent == null){
     226        return metadataSetInfo.getNamespace() +"."+name;
     227    }
     228    else{
     229        return parent.getFullName() +"^"+ name;
     230    }
     231    }
     232
     233    public void setParent(MetadataElementModel pr){
     234    parent = pr;
     235    }
     236
     237    public MetadataElementModel getParent(){
     238    return parent;
     239    }
    220240
    221241       
    222       public boolean moveUp(MetadataElementModel child){
    223           metadataSetInfo.getMetadataSetModel().setChanged(true);
    224           int index = children.indexOf(child);
    225           if (index-1 >=0){
    226           children.remove(child);
    227               children.add(index-1,child);
    228               return true;
    229       }       
    230       return false;
    231       }
    232 
    233        public boolean moveDown(MetadataElementModel child){
    234       metadataSetInfo.getMetadataSetModel().setChanged(true);
    235        int index = children.indexOf(child);
    236        if (index+1 < children.size()){
    237            children.remove(child);
    238            children.add(index+1,child);
    239            return true;
    240        }       
    241 
    242        return false;
    243       }
    244      
    245       private ArrayList getAllLanguages(){
    246       ArrayList langs = new ArrayList();   
    247 
    248       for(int i=0;i<langDependAttributes.size();i++){
    249         Attribute attr = (Attribute) langDependAttributes.get(i);
    250             if (!langs.contains(attr.getLanguage()) && !attr.getLanguage().trim().equals("")){
    251         langs.add(attr.getLanguage());
    252         }
    253       }   
    254 
    255       return langs;
    256       }
    257 
    258       public int languageExist(String lang){
    259       for(int i=0;i<langDependAttributes.size();i++){
    260           Attribute attr = (Attribute) langDependAttributes.get(i);
    261           if (attr.getLanguage().trim().equals(lang.trim())){
    262           return i;
    263           }
    264       }   
    265      
    266       return -1;
    267       }
    268 
    269       public String[] getLangDependAttrNames(){
    270           return metadataSetInfo.getLangDependAttrNames();
    271       }
    272      
    273       private ArrayList getAttributesByLanguage(String lang){
    274       ArrayList attrs = new ArrayList();   
    275      
    276       for(int i=0;i<langDependAttributes.size();i++){
    277           Attribute attr = (Attribute) langDependAttributes.get(i);
    278           if (!attr.getLanguage().trim().equals("") && attr.getLanguage().trim().equals(lang)){
    279           attrs.add(attr);
    280           }
    281       }   
    282      
    283       return attrs;
    284       }
    285 
    286 
    287       public void save(){
    288       saveElement();
     242    public boolean moveUp(MetadataElementModel child){
     243    metadataSetInfo.getMetadataSetModel().setChanged(true);
     244    int index = children.indexOf(child);
     245    if (index-1 >=0){
     246        children.remove(child);
     247        children.add(index-1,child);
     248        return true;
     249    }       
     250    return false;
     251    }
     252
     253    public boolean moveDown(MetadataElementModel child){
     254    metadataSetInfo.getMetadataSetModel().setChanged(true);
     255    int index = children.indexOf(child);
     256    if (index+1 < children.size()){
     257        children.remove(child);
     258        children.add(index+1,child);
     259        return true;
     260    }       
     261
     262    return false;
     263    }
     264
     265    public void save(){
     266    saveElement();
    289267     
    290       for(int i=0;i<children.size();i++){
    291           MetadataElementModel model = (MetadataElementModel)children.get(i);
    292           model.save();
    293       }   
     268    for(int i=0;i<children.size();i++){
     269        MetadataElementModel model = (MetadataElementModel)children.get(i);
     270        model.save();
     271    }   
    294272       
    295       }
    296 
    297 
    298       private void saveElement(){
    299       Document doc = metadataSetInfo.getMetadataSetDocument();       
    300 
    301        Node parent_element = null;
    302      
    303       if (parent !=null){
    304           parent_element = parent.getMetadataElement();
    305       }
    306       else{
    307           parent_element = doc.getDocumentElement();
    308       }
    309      
    310      
    311       metadata_element = save(doc);
    312 
    313       parent_element.appendChild(metadata_element);
     273    }
     274
     275
     276    private void saveElement(){
     277    Document doc = metadataSetInfo.getMetadataSetDocument();       
     278
     279    Node parent_element = null;
     280     
     281    if (parent !=null){
     282        parent_element = parent.getMetadataElement();
     283    }
     284    else{
     285        parent_element = doc.getDocumentElement();
     286    }
     287     
     288     
     289    metadata_element = save(doc);
     290
     291    parent_element.appendChild(metadata_element);
    314292                               
    315293       
    316       }
    317 
    318 
    319       private Element save(Document doc){
    320    
    321       metadata_element = doc.createElement(GEMSConstants.ELEMENT_ELEMENT);
    322       metadata_element.setAttribute(GEMSConstants.NAME_ATTRIBUTE,name);
     294    }
     295
     296
     297    private Element save(Document doc){
     298   
     299    metadata_element = doc.createElement(GEMSConstants.ELEMENT_ELEMENT);
     300    metadata_element.setAttribute(GEMSConstants.NAME_ATTRIBUTE,name);
    323301             
    324           //non language dependent attributes
    325           for(int i=0;i<attributes.size();i++){
    326           Attribute attr = (Attribute)attributes.get(i);
    327           if (attr.getName() == null || attr.getName().trim().equals("")) continue;
    328           Element attrElement =  doc.createElement(GEMSConstants.ATTRIBUTE_ELEMENT);
    329           attrElement.setAttribute(GEMSConstants.NAME_ATTRIBUTE,attr.getName());
    330           attrElement.appendChild(doc.createTextNode(attr.getValue()));
    331           metadata_element.appendChild(attrElement);
    332       }
    333 
    334      
    335       //language dependent attributes
    336       ArrayList langs = getAllLanguages();
    337       for (int i=0;i<langs.size();i++){
    338           String lang = (String)langs.get(i);
    339           Element langElement =  doc.createElement(GEMSConstants.LANGUAGE_ELEMENT);
    340           langElement.setAttribute(GEMSConstants.CODE_ATTRIBUTE,lang);
    341               ArrayList langAttrs = getAttributesByLanguage(lang);
    342               for (int j=0;j<langAttrs.size();j++){
    343           Attribute attr = (Attribute)langAttrs.get(j);
    344           Element attrElement =  doc.createElement(GEMSConstants.ATTRIBUTE_ELEMENT);
    345           attrElement.setAttribute(GEMSConstants.NAME_ATTRIBUTE,attr.getName());
    346           attrElement.appendChild(doc.createTextNode(attr.getValue())); 
    347           langElement.appendChild(attrElement);
     302    //non language dependent attributes
     303    for(int i=0;i<attributes.size();i++){
     304        Attribute attr = (Attribute)attributes.get(i);
     305        if (attr.getName() == null || attr.getName().trim().equals("")) continue;
     306        if (attr.getName().equals("name")) continue;
     307        Element attrElement =  doc.createElement(GEMSConstants.ATTRIBUTE_ELEMENT);
     308        attrElement.setAttribute(GEMSConstants.NAME_ATTRIBUTE,attr.getName());
     309        attrElement.appendChild(doc.createTextNode(attr.getValue()));
     310        metadata_element.appendChild(attrElement);
     311    }
     312
     313     
     314    //language dependent attributes
     315    ArrayList langs = getAllLanguages();
     316    for (int i=0;i<langs.size();i++){
     317        String lang = (String)langs.get(i);
     318        Element langElement =  doc.createElement(GEMSConstants.LANGUAGE_ELEMENT);
     319        langElement.setAttribute(GEMSConstants.CODE_ATTRIBUTE,lang);
     320        ArrayList langAttrs = getAttributesByLanguage(lang);
     321        for (int j=0;j<langAttrs.size();j++){
     322        Attribute attr = (Attribute)langAttrs.get(j);
     323        Element attrElement =  doc.createElement(GEMSConstants.ATTRIBUTE_ELEMENT);
     324        attrElement.setAttribute(GEMSConstants.NAME_ATTRIBUTE,attr.getName());
     325        attrElement.appendChild(doc.createTextNode(attr.getValue())); 
     326        langElement.appendChild(attrElement);
    348327                       
    349           }
    350           metadata_element.appendChild(langElement);   
    351       }             
    352 
    353       return metadata_element;
     328        }
     329        metadata_element.appendChild(langElement);   
     330    }             
     331
     332    return metadata_element;
    354333           
    355       }
     334    }
    356335
    357336 
  • trunk/gli/src/org/greenstone/gatherer/gems/MetadataSetInfo.java

    r12572 r12669  
    5353/**
    5454 * @author Shaoqun Wu, Greenstone Digital Library, University of Waikato
    55  * @version 2.4
    5655 */
    57 public class MetadataSetInfo{
    58  
    59     private  ArrayList attributes; // store the attributes of MetadataSet Element
    60 
    61     private  ArrayList langDependAttributes;   
    62    
     56public class MetadataSetInfo
     57    extends AttributeContainer
     58{
     59   
    6360    private String file_path=""; 
    6461
     
    7269
    7370    public MetadataSetInfo(){       
    74 
    75     attributes = new ArrayList();
    76     langDependAttributes =  new ArrayList();               
    77    
    78     for(int i=0;i<GEMSConstants.REQUIRED_ATTRIBUTES.length;i++){
    79         String reName = GEMSConstants.REQUIRED_ATTRIBUTES[i];
    80         Attribute attr = new Attribute(reName,"",true,false);
    81         attributes.add(attr);           
    82     }
    83 
    84         Attribute attr = new Attribute(GEMSConstants.LANGUAGE_DEPENDENT_ATTRIBUTE,"",false,false);
    85     attributes.add(attr);
    86  
    87     attr = new Attribute(GEMSConstants.NAME_ATTRIBUTE,"",true,true);
    88     attr.setLanguage(getCurrentLanguage());
    89     langDependAttributes.add(attr);
    90         attr = new Attribute(GEMSConstants.DESCRIPTION_ATTRIBUTE,"");
    91         attr.setLanguage(getCurrentLanguage());
    92     langDependAttributes.add(attr);
    93 
     71    super(GEMSConstants.SET_REQUIRED_ATTRIBUTES, GEMSConstants.SET_LANG_DEPEND_ATTR_NAMES);
    9472    }
    9573
    96     public boolean checkNamespace(String namespace){
    97      if(metadata_model != null)
    98         return metadata_model.getMetadataSetManager().checkNamespace(namespace);
    99      
    100      return true;
     74    public boolean isNamespaceAlreadyUsed(String namespace){
     75    if(metadata_model != null) {
     76        return metadata_model.getMetadataSetManager().isNamespaceAlreadyUsed(namespace);
     77    }
     78    return false;
    10179    }
    10280
     
    11189    public Document getMetadataSetDocument(){
    11290    return  metadata_model.getMetadataSetDocument();
    113     }
    114 
    115     public ArrayList getAttributes(){
    116     return attributes;
    117     }
    118 
    119     public void setAttributes(ArrayList new_attributes){
    120           attributes = new_attributes;
    121       for(int i=0;i<attributes.size();i++){
    122           Attribute attr = (Attribute)attributes.get(i);
    123       }
    124      
    125     }
    126 
    127     private Attribute getAttributeByName(String name){
    128         for(int i=0;i<attributes.size();i++){
    129         Attribute attr = (Attribute) attributes.get(i);
    130             if (attr.getName() != null && attr.getName().trim().equals(name.trim())){
    131         return attr;
    132         }
    133     }
    134 
    135     return null;
    136     }
    137    
    138     private Attribute getAttributeByNameAndLanguage(String name, String lang){
    139     for(int i=0;i<langDependAttributes.size();i++){
    140         Attribute attr = (Attribute) langDependAttributes.get(i);
    141         if (attr.getName() != null || attr.getLanguage()!=null){
    142         if (attr.getName().trim().equals(name.trim()) && (attr.getLanguage().trim().equals(lang.trim()))){
    143             return attr;
    144         }
    145         }
    146     }
    147    
    148     return null;
    149    
    150     }
    151 
    152 
    153     private ArrayList getAllLanguages(){
    154     ArrayList langs = new ArrayList();   
    155 
    156        for(int i=0;i<langDependAttributes.size();i++){
    157         Attribute attr = (Attribute) langDependAttributes.get(i);
    158             if (!langs.contains(attr.getLanguage()) && !attr.getLanguage().trim().equals("")){
    159         langs.add(attr.getLanguage());
    160         }
    161     }   
    162 
    163        return langs;
    164     }
    165    
    166     public void setLangDependAttributes(ArrayList lda){
    167     langDependAttributes = lda;
    168     for(int i=0;i<langDependAttributes.size();i++){
    169         Attribute attr = (Attribute)langDependAttributes.get(i);
    170     }
    171 
    172     }
    173    
    174 
    175     public ArrayList getLangDependAttributes(){
    176    
    177     return langDependAttributes;
    17891    }
    17992   
     
    187100   
    188101
    189     public String getMetadataSetName(){   
    190         Attribute attr =  getAttributeByNameAndLanguage(GEMSConstants.NAME_ATTRIBUTE,getCurrentLanguage());
    191     if (attr != null){
     102    public String getMetadataSetName(){ 
     103    return getMetadataSetName(getCurrentLanguage());
     104    }
     105
     106    public String getMetadataSetName(String lang){   
     107        Attribute attr = getAttributeByNameAndLanguage(GEMSConstants.NAME_ATTRIBUTE,lang);
     108    if (attr != null) {
    192109        return attr.getValue();
    193110    }
    194     else{
    195              return GEMSConstants.UNKNOWN_NAME;
     111    else {
     112        return GEMSConstants.UNKNOWN_NAME;
    196113    }     
    197114    }
    198115
    199     public String getMetadataSetName(String lang){   
    200         Attribute attr =  getAttributeByNameAndLanguage(GEMSConstants.NAME_ATTRIBUTE,lang);
    201     if (attr != null){
    202         return attr.getValue();
    203     }
    204     else{
    205              return GEMSConstants.UNKNOWN_NAME;
    206     }     
    207     }
     116     public void setMetadataSetName(String name){
     117     setMetadataSetName(name, getCurrentLanguage());
     118     }
    208119
    209120    public void setMetadataSetName(String name,String lang){ 
     
    214125    }
    215126
    216      public void setMetadataSetName(String name){ 
    217     Attribute attr =  getAttributeByNameAndLanguage(GEMSConstants.NAME_ATTRIBUTE,getCurrentLanguage());
    218          if (attr != null){
    219          attr.setValue(name);
    220      }
    221     }
    222 
    223127
    224128 
    225129    public String getMetadataSetDescription(){ 
    226     Attribute attr = getAttributeByNameAndLanguage(GEMSConstants.DESCRIPTION_ATTRIBUTE,getCurrentLanguage());
    227          if (attr != null){
    228          return attr.getValue();
    229      }
    230      else{
    231              return "";
    232      }
    233      
     130    return getMetadataSetDescription(getCurrentLanguage()); 
    234131    }
    235132   
     
    244141    }
    245142 
     143    public void setMetadataSetDescription(String desc) {
     144    setMetadataSetDescription(desc, getCurrentLanguage());
     145    }
     146   
     147    public void setMetadataSetDescription(String desc, String lang) {
     148    Attribute attr =  getAttributeByNameAndLanguage(GEMSConstants.DESCRIPTION_ATTRIBUTE,lang);
     149         if (attr != null){
     150         attr.setValue(desc);
     151     }
     152    }
     153   
    246154    public String getCurrentLanguage(){
    247155    return current_language;   
     
    252160    }
    253161   
    254     public int languageExist(String lang){
    255       for(int i=0;i<langDependAttributes.size();i++){
    256           Attribute attr = (Attribute) langDependAttributes.get(i);
    257           if (attr.getLanguage() !=null && attr.getLanguage().trim().equals(lang.trim())){
    258           return i;
    259           }
    260       }   
    261      
    262       return -1;
    263       }
    264 
    265     public String[] getLangDependAttrNames(){
    266         Attribute attr = getAttributeByName(GEMSConstants.LANGUAGE_DEPENDENT_ATTRIBUTE); 
    267     if (attr !=null){
    268         return attr.getValue().split(GEMSConstants.LANGUAGE_DEPENDENT_SPLIT_STRING);
    269     }
    270     return null;
    271     } 
    272 
    273162    public String getNamespace(){
    274163        Attribute attr = getAttributeByName(GEMSConstants.NAMESPACE_ATTRIBUTE);
     
    351240   
    352241        Element doc_element = doc.getDocumentElement();
    353    
    354         //remove all attributes
     242    //remove all attributes
    355243    NamedNodeMap attrs = doc.getDocumentElement().getAttributes();
    356244    for (int i=0;i<attrs.getLength();i++){
     
    369257    NodeList setLanguages = doc_element.getElementsByTagName(GEMSConstants.SET_LANGUAGE_ELEMENT); 
    370258
    371          for(int i=0;i<setLanguages.getLength();i++){
    372             Node set_language = setLanguages.item(i);
    373                 doc_element.removeChild(set_language);
    374      }
     259    for (int i=setLanguages.getLength()-1;i>=0;--i){
     260        Node set_language = setLanguages.item(i);
     261        doc_element.removeChild(set_language);
     262    }
    375263
    376264     ArrayList names = XMLTools.getChildElementsByTagName(doc_element,GEMSConstants.NAME_ELEMENT);   
     
    390278     Node previous_element = null;
    391279
    392      //add setLanguguage elements
     280     //add setLanguage elements
    393281        ArrayList langs = getAllLanguages();
    394282    for (int i=0;i<langs.size();i++){
    395283        String lang = (String)langs.get(i);
    396             Attribute name = getAttributeByNameAndLanguage(GEMSConstants.NAME_ATTRIBUTE,lang);
     284        Attribute name = getAttributeByNameAndLanguage(GEMSConstants.NAME_ATTRIBUTE,lang);
    397285        if (name !=null){
    398286        Element set_element = doc.createElement(GEMSConstants.SET_LANGUAGE_ELEMENT);
     
    417305              }
    418306         }
    419          else{
     307         else {
    420308             doc_element.insertBefore(set_element,first_child);
    421309             first_child = null;
Note: See TracChangeset for help on using the changeset viewer.