KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > ipanema > person > edit > blockbased > PersonEditorStructBlockRegistry


1 /*
2  * Created on Dec 1, 2004
3  * by alex
4  *
5  */

6 package com.nightlabs.ipanema.person.edit.blockbased;
7
8 import java.util.Collections JavaDoc;
9 import java.util.HashMap JavaDoc;
10 import java.util.Iterator JavaDoc;
11 import java.util.LinkedList JavaDoc;
12 import java.util.List JavaDoc;
13 import java.util.Map JavaDoc;
14
15 import com.nightlabs.ipanema.person.PersonStruct;
16 import com.nightlabs.ipanema.person.PersonStructBlock;
17 import com.nightlabs.ipanema.person.PersonStructCache;
18 import com.nightlabs.ipanema.person.id.PersonStructBlockID;
19
20 /**
21  * Registry for PersonStructBlocks to be displayed by
22  * block-based PersonEditors.
23  *
24  * @author Alexander Bieber <alex[AT]nightlabs[DOT]de>
25  */

26 public class PersonEditorStructBlockRegistry {
27     
28     /**
29      * key: String editorScope<br/>
30      * value: Map editorsStructBlocks<br/>
31      * -> key: String editorName<br/>
32      * -> value: List
33      * -> value: PersonStructBlockID personStructBlockKey
34      */

35     private Map JavaDoc editorStructBlocks = new HashMap JavaDoc();
36     
37     /**
38      * Adds the list of personStructBlockKeys to
39      * the editor with the given scope and name.
40      *
41      * @param editorScope
42      * @param editorName
43      * @param personStructBlockKeys
44      */

45     public void addEditorStructBlocks(String JavaDoc editorScope, String JavaDoc editorName, PersonStructBlockID[] personStructBlockIDs) {
46         if (!editorStructBlocks.containsKey(editorScope)) {
47             editorStructBlocks.put(editorScope,new HashMap JavaDoc());
48         }
49         Map JavaDoc editorsStructBlockKeys = (Map JavaDoc)editorStructBlocks.get(editorScope);
50         if (!editorsStructBlockKeys.containsKey(editorName))
51             editorsStructBlockKeys.put(editorName,new LinkedList JavaDoc());
52         List JavaDoc personStructBlockKeyList = (List JavaDoc)editorsStructBlockKeys.get(editorName);
53         for (int i=0; i<personStructBlockIDs.length; i++) {
54             personStructBlockKeyList.add(personStructBlockIDs[i]);
55         }
56     }
57     
58     /**
59      * Returns an Iterator to a list of Strings representing the
60      * personStructBlockKeys registered for the editor in scope
61      * editorScope and with name editorName.
62      *
63      * @param editorScope
64      * @param editorName
65      * @return
66      */

67     public List JavaDoc getEditorStructBlocks(String JavaDoc editorScope, String JavaDoc editorName) {
68         Map JavaDoc editorsStructBlockKeys = (Map JavaDoc)editorStructBlocks.get(editorScope);
69         if (editorsStructBlockKeys != null) {
70             List JavaDoc personStructBlockKeyList = (List JavaDoc)editorsStructBlockKeys.get(editorName);
71             if (personStructBlockKeyList != null) {
72                 return personStructBlockKeyList;
73             }
74             else
75                 return Collections.EMPTY_LIST;
76         }
77         else
78             return Collections.EMPTY_LIST;
79     }
80     
81     public Iterator JavaDoc getEditorStructBlocksIterator(String JavaDoc editorScope, String JavaDoc editorName) {
82         return getEditorStructBlocks(editorScope,editorName).iterator();
83     }
84     
85     /**
86      * Checks weather the given PersonStructBlock is registered in
87      * at least one editor within the given scope.
88      *
89      * @param editorScope
90      * @param structBlock
91      * @return
92      */

93     public boolean hasEditorCoverage(String JavaDoc editorScope, PersonStructBlock structBlock) {
94         Map JavaDoc editorsStructBlockKeys = (Map JavaDoc)editorStructBlocks.get(editorScope);
95         if (editorsStructBlockKeys != null) {
96             for (Iterator JavaDoc it = editorsStructBlockKeys.values().iterator(); it.hasNext(); ) {
97                 List JavaDoc personStructBlockKeyList = (List JavaDoc)it.next();
98                 if (personStructBlockKeyList.contains(PersonStructBlockID.create(structBlock.getPersonStructBlockOrganisationID(),structBlock.getPersonStructBlockID())))
99                     return true;
100             }
101         }
102         return false;
103     }
104     
105     /**
106      * Returns a list of Strings representing all PersonStructBlock not
107      * covered by other editors within the given editorScope.
108      *
109      * @param editorScope
110      * @param editorName
111      * @return
112      */

113     public List JavaDoc computeRemainingBlockKeyList(String JavaDoc editorScope) {
114         List JavaDoc result = new LinkedList JavaDoc();
115         PersonStruct structure = PersonStructCache.getPersonStructure();
116         for (Iterator JavaDoc it = structure.getPersonStructBlocks().iterator(); it.hasNext(); ) {
117             PersonStructBlock structBlock = (PersonStructBlock)it.next();
118             if (!hasEditorCoverage(editorScope,structBlock))
119                 result.add(PersonStructBlockID.create(structBlock.getPersonStructBlockOrganisationID(), structBlock.getPersonStructBlockID()));
120         }
121         return result;
122     }
123     
124     public PersonStructBlockID[] computeRemainingBlockKeys(String JavaDoc editorScope) {
125         List JavaDoc keys = computeRemainingBlockKeyList(editorScope);
126         PersonStructBlockID[] result = new PersonStructBlockID[keys.size()];
127         for (int i=0; i<keys.size(); i++) {
128             result[i] = (PersonStructBlockID)keys.get(i);
129         }
130         return result;
131     }
132     
133     private static PersonEditorStructBlockRegistry sharedInstance;
134     public static PersonEditorStructBlockRegistry getSharedInstance() {
135         if (sharedInstance == null)
136             sharedInstance = new PersonEditorStructBlockRegistry();
137         return sharedInstance;
138     }
139     
140 }
141
Popular Tags