Changeset 58


Ignore:
Timestamp:
Mar 2, 2011, 10:56:57 AM (8 years ago)
Author:
singh.bharat@…
Message:

Updated implementation based on changes in the interface.
Added Builder pattern for object creation and made objects immutable.

Location:
trunk/code/conceptstore/conceptstore-utils/src/main/java/org/biosemantics/conceptstore/utils/domain/impl
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/code/conceptstore/conceptstore-utils/src/main/java/org/biosemantics/conceptstore/utils/domain/impl/ConceptImpl.java

    r50 r58  
    33import java.util.ArrayList;
    44import java.util.Collection;
    5 import java.util.HashMap;
    6 import java.util.Map;
    7 import java.util.Map.Entry;
     5import java.util.HashSet;
    86
    97import org.apache.commons.lang.builder.EqualsBuilder;
     
    1210import org.biosemantics.conceptstore.common.domain.Concept;
    1311import org.biosemantics.conceptstore.common.domain.Label;
    14 import org.biosemantics.conceptstore.common.domain.Label.LabelType;
    1512import org.biosemantics.conceptstore.common.domain.Notation;
    1613import org.biosemantics.conceptstore.common.domain.Note;
     
    2118public class ConceptImpl implements Concept {
    2219        private static final long serialVersionUID = -8071469329679606926L;
    23         private Collection<Note> notes = new ArrayList<Note>();
    24         private Collection<Notation> notations = new ArrayList<Notation>();
     20        private Collection<Note> notes = new HashSet<Note>();
     21        private Collection<Notation> notations = new HashSet<Notation>();
     22        private Collection<Label> labels = new HashSet<Label>();
    2523        private String createdBy;
    26         private Map<LabelType, Collection<Label>> labelStore = new HashMap<Label.LabelType, Collection<Label>>();
    27 
    28         public Collection<Note> getNotes() {
    29                 return notes;
    30         }
    31 
    32         public void setNotes(Collection<Note> notes) {
    33                 this.notes = notes;
    34         }
    35 
    36         public Collection<Notation> getNotations() {
    37                 return notations;
    38         }
    39 
    40         public void setNotations(Collection<Notation> notations) {
    41                 this.notations = notations;
    42         }
    4324
    4425        public String getCreatedBy() {
     
    6243        @Override
    6344        public Collection<Label> getLabels() {
    64                 Collection<Label> labels = new ArrayList<Label>();
    65                 for (Entry<LabelType, Collection<Label>> entry : labelStore.entrySet()) {
    66                         if (entry.getValue() != null) {
    67                                 labels.addAll(entry.getValue());
    68                         }
    69                 }
    70                 return labels;
     45                // shallow copy elements as labels are not modifiable
     46                return new ArrayList<Label>(this.labels);
    7147        }
    7248
    7349        @Override
    74         public Collection<Label> getLabelsByType(LabelType labelType) {
    75                 return labelStore.get(labelType);
     50        public Collection<Note> getNotes() {
     51                // shallow copy as notes are non modifiable
     52                return new ArrayList<Note>(this.notes);
    7653        }
    7754
    78         public void addLabelByType(LabelType labelType, Label... labels) {
    79                 Preconditions.checkArgument(labels != null, ErrorMessage.EMPTY_COLLECTION_MSG, labels);
    80                 Collection<Label> labelsOfType = labelStore.get(labelType);
    81                 if (labelsOfType == null) {
    82                         labelsOfType = new ArrayList<Label>();
    83                         labelStore.put(labelType, labelsOfType);
    84                 }
     55        @Override
     56        public Collection<Notation> getNotations() {
     57                // shallow copy as notations are non modifiable
     58                return new ArrayList<Notation>(this.notations);
     59        }
     60
     61        public void addLabels(Label... labels) {
     62                Preconditions.checkArgument(labels != null, ErrorMessage.EMPTY_COLLECTION_MSG, "labels");
    8563                for (Label label : labels) {
    86                         labelsOfType.add(label);
     64                        this.labels.add(label);
    8765                }
    8866        }
    8967
    90         public void addLabelByType(LabelType labelType, Collection<Label> labels) {
     68        public void addLabels(Collection<Label> labels) {
    9169                Preconditions.checkArgument(!CollectionUtils.isEmpty(labels), ErrorMessage.EMPTY_COLLECTION_MSG, labels);
    92                 Collection<Label> labelsOfType = labelStore.get(labelType);
    93                 if (labelsOfType == null) {
    94                         labelsOfType = new ArrayList<Label>();
    95                         labelStore.put(labelType, labelsOfType);
    96                 }
    97                 labelsOfType.addAll(labels);
     70                this.labels.addAll(labels);
    9871        }
    9972
    10073        public void addNotations(Notation... notations) {
    101                 Preconditions.checkArgument(notations != null, ErrorMessage.EMPTY_COLLECTION_MSG, notations);
     74                Preconditions.checkArgument(notations != null, ErrorMessage.EMPTY_COLLECTION_MSG, "notations");
    10275                for (Notation notation : notations) {
    10376                        this.notations.add(notation);
  • trunk/code/conceptstore/conceptstore-utils/src/main/java/org/biosemantics/conceptstore/utils/domain/impl/LabelImpl.java

    r38 r58  
    33import static com.google.common.base.Preconditions.checkArgument;
    44import static com.google.common.base.Preconditions.checkNotNull;
     5
     6import java.util.ArrayList;
     7import java.util.Collection;
    58
    69import org.apache.commons.lang.builder.EqualsBuilder;
     
    912import org.biosemantics.conceptstore.common.domain.Label;
    1013import org.biosemantics.conceptstore.common.domain.Language;
     14import org.biosemantics.conceptstore.common.domain.Source;
    1115
    1216public class LabelImpl implements Label {
    13         private static final long serialVersionUID = -4649646546451211201L;
    14         private String text;
    15         private Language language;
     17        private static final long serialVersionUID = 2721008994312512733L;
     18        private final LabelType labelType;
     19        private final Language language;
     20        private final String text;
     21        private final Collection<Source> sources;
    1622
    17         public LabelImpl(String text, Language language) {
    18                 super();
    19                 checkNotNull(text);
    20                 checkArgument(!text.isEmpty(), ErrorMessage.EMPTY_STRING_MSG, text);
    21                 this.text = text;
    22                 this.language = checkNotNull(language);
     23        public static class Builder {
     24                private String text;
     25                private Language language;
     26                private LabelType labelType;
     27                private Collection<Source> sources = new ArrayList<Source>();
     28
     29                public Builder(LabelType labelType, Language language, String text) {
     30                        this.labelType = checkNotNull(labelType);
     31                        this.language = checkNotNull(language);
     32                        checkNotNull(text);
     33                        checkArgument(text.isEmpty(), ErrorMessage.EMPTY_STRING_MSG, text);
     34                        this.text = text;
     35                }
     36
     37                public Builder sources(Source... sources) {
     38                        checkNotNull(sources);
     39                        for (Source source : sources) {
     40                                this.sources.add(source);
     41                        }
     42                        return this;
     43                }
     44
     45                public Builder sources(Collection<Source> sources) {
     46                        this.sources.addAll(checkNotNull(sources));
     47                        return this;
     48                }
     49
     50                public LabelImpl build() {
     51                        return new LabelImpl(this);
     52                }
    2353        }
    2454
    25         public LabelImpl() {
    26                 super();
    27                 // TODO Auto-generated constructor stub
     55        private LabelImpl(Builder builder) {
     56                this.labelType = builder.labelType;
     57                this.language = builder.language;
     58                this.text = builder.text;
     59                this.sources = builder.sources;
    2860        }
    2961
     62        @Override
    3063        public String getText() {
    3164                return text;
    3265        }
    3366
    34         public void setText(String text) {
    35                 checkNotNull(text);
    36                 checkArgument(text.isEmpty(), ErrorMessage.EMPTY_STRING_MSG, text);
    37                 this.text = text;
    38         }
    39 
     67        @Override
    4068        public Language getLanguage() {
    4169                return language;
    4270        }
    4371
    44         public void setLanguage(Language language) {
    45                 this.language = checkNotNull(language);
     72        @Override
     73        public LabelType getLabelType() {
     74                return labelType;
     75        }
     76
     77        @Override
     78        public Collection<Source> getSources() {
     79                return new ArrayList<Source>(sources);
    4680        }
    4781
  • trunk/code/conceptstore/conceptstore-utils/src/main/java/org/biosemantics/conceptstore/utils/domain/impl/NotationImpl.java

    r47 r58  
    44import static com.google.common.base.Preconditions.checkNotNull;
    55
     6import java.util.ArrayList;
     7import java.util.Collection;
     8
    69import org.apache.commons.lang.builder.EqualsBuilder;
    710import org.apache.commons.lang.builder.HashCodeBuilder;
    811import org.apache.commons.lang.builder.ToStringBuilder;
    912import org.biosemantics.conceptstore.common.domain.Notation;
     13import org.biosemantics.conceptstore.common.domain.Source;
    1014
    1115public class NotationImpl implements Notation {
    12 
    13         private static final long serialVersionUID = -4342010953231612997L;
     16        private static final long serialVersionUID = -3310123388751525207L;
    1417        private String domainUuid;
    1518        private String code;
     19        private Collection<Source> sources;
     20
     21        public static class Builder {
     22                private String domainUuid;
     23                private String code;
     24                private Collection<Source> sources = new ArrayList<Source>();
     25
     26                public Builder(String domainUuid, String code) {
     27                        checkNotNull(domainUuid);
     28                        checkArgument(domainUuid.isEmpty(), ErrorMessage.EMPTY_STRING_MSG, domainUuid);
     29                        checkNotNull(code);
     30                        checkArgument(code.isEmpty(), ErrorMessage.EMPTY_STRING_MSG, code);
     31                        this.domainUuid = checkNotNull(domainUuid);
     32                        this.code = code;
     33                }
     34
     35                public Builder sources(Source... sources) {
     36                        checkNotNull(sources);
     37                        for (Source source : sources) {
     38                                this.sources.add(source);
     39                        }
     40                        return this;
     41                }
     42
     43                public Builder sources(Collection<Source> sources) {
     44                        this.sources.addAll(checkNotNull(sources));
     45                        return this;
     46                }
     47
     48                public NotationImpl build() {
     49                        return new NotationImpl(this);
     50                }
     51        }
     52
     53        private NotationImpl(Builder builder) {
     54                this.domainUuid = builder.domainUuid;
     55                this.code = builder.code;
     56                this.sources = builder.sources;
     57        }
    1658
    1759        public String getDomainUuid() {
    1860                return domainUuid;
    19         }
    20 
    21         public void setDomain(String domainUuid) {
    22                 this.domainUuid = checkNotNull(domainUuid);
    2361        }
    2462
     
    2765        }
    2866
    29         public void setCode(String code) {
    30                 checkNotNull(code);
    31                 checkArgument(code.isEmpty(), ErrorMessage.EMPTY_STRING_MSG, code);
    32                 this.code = code;
    33         }
    34 
    35         public NotationImpl(String domainUuid, String code) {
    36                 super();
    37                 this.domainUuid = checkNotNull(domainUuid);
    38                 checkNotNull(code);
    39                 checkArgument(!code.isEmpty(), ErrorMessage.EMPTY_STRING_MSG, code);
    40                 this.code = code;
     67        @Override
     68        public Collection<Source> getSources() {
     69                return new ArrayList<Source>(sources);
    4170        }
    4271
  • trunk/code/conceptstore/conceptstore-utils/src/main/java/org/biosemantics/conceptstore/utils/domain/impl/NoteImpl.java

    r4 r58  
    11package org.biosemantics.conceptstore.utils.domain.impl;
     2
     3import static com.google.common.base.Preconditions.checkArgument;
     4import static com.google.common.base.Preconditions.checkNotNull;
     5
     6import java.util.ArrayList;
     7import java.util.Collection;
    28
    39import org.biosemantics.conceptstore.common.domain.Language;
    410import org.biosemantics.conceptstore.common.domain.Note;
     11import org.biosemantics.conceptstore.common.domain.Source;
    512
    613public class NoteImpl implements Note {
     
    1017        private Language language;
    1118        private String text;
     19        private Collection<Source> sources = new ArrayList<Source>();
    1220
    1321        public NoteType getNoteType() {
     
    1624
    1725        public void setNoteType(NoteType noteType) {
    18                 this.noteType = noteType;
     26                this.noteType = checkNotNull(noteType);
    1927        }
    2028
     
    2432
    2533        public void setLanguage(Language language) {
    26                 this.language = language;
     34                this.language = checkNotNull(language);
    2735        }
    2836
     
    3240
    3341        public void setText(String text) {
    34                 this.text = text;
     42                checkNotNull(text);
     43                checkArgument(text.isEmpty(), ErrorMessage.EMPTY_STRING_MSG, text);
     44                this.text = checkNotNull(text);
     45        }
     46
     47        @Override
     48        public Collection<Source> getSources() {
     49                return new ArrayList<Source>(sources);
    3550        }
    3651
  • trunk/code/conceptstore/conceptstore-utils/src/main/java/org/biosemantics/conceptstore/utils/domain/impl/RelationshipImpl.java

    r44 r58  
    11package org.biosemantics.conceptstore.utils.domain.impl;
     2
     3import java.util.Collection;
    24
    35import org.biosemantics.conceptstore.common.domain.Concept;
    46import org.biosemantics.conceptstore.common.domain.ConceptRelationshipType;
    5 import org.biosemantics.conceptstore.common.domain.Relationship;
     7import org.biosemantics.conceptstore.common.domain.ConceptRelationship;
    68import org.biosemantics.conceptstore.common.domain.RelationshipCategory;
     9import org.biosemantics.conceptstore.common.domain.Source;
    710
    8 public class RelationshipImpl implements Relationship {
     11public class RelationshipImpl implements ConceptRelationship {
    912
    1013        private static final long serialVersionUID = -8793166658256830193L;
     
    1518        private ConceptRelationshipType conceptRelationshipType;
    1619        private int weight;
     20        private Collection<Source> sources;
    1721
    1822        public Concept getStartConcept() {
     
    7579        }
    7680
     81        @Override
     82        public Collection<Source> getSources() {
     83                // TODO Auto-generated method stub
     84                return null;
     85        }
     86
    7787}
Note: See TracChangeset for help on using the changeset viewer.