1 package org.mevenide.idea.psi.project;
2
3 import com.intellij.psi.xml.XmlFile;
4 import java.util.Collections;
5 import java.util.HashMap;
6 import java.util.Map;
7 import org.mevenide.idea.psi.support.AbstractPsiBeanRowsObservable;
8
9 /***
10 * @author Arik
11 */
12 public abstract class AbstractPsiTeamMembers extends AbstractPsiBeanRowsObservable {
13 private final Map<Integer, PsiTeamMemberRoles> rolesCache = Collections.synchronizedMap(
14 new HashMap<Integer, PsiTeamMemberRoles>(10));
15
16 protected AbstractPsiTeamMembers(final XmlFile pXmlFile,
17 final String pContainerTagPath,
18 final String pRowTagName) {
19 super(pXmlFile, pContainerTagPath, pRowTagName);
20 registerTag("name", "name");
21 registerTag("id", "id");
22 registerTag("email", "email");
23 registerTag("organization", "organization");
24 registerTag("url", "url");
25 registerTag("timezone", "timezone");
26 }
27
28 public String getName(final int pRow) {
29 return getValue(pRow, "name");
30 }
31
32 public void setName(final int pRow, final String pName) {
33 setValue(pRow, "name", pName);
34 }
35
36 public String getId(final int pRow) {
37 return getValue(pRow, "id");
38 }
39
40 public void setId(final int pRow, final String pId) {
41 setValue(pRow, "id", pId);
42 }
43
44 public String getEmail(final int pRow) {
45 return getValue(pRow, "email");
46 }
47
48 public void setEmail(final int pRow, final String pEmail) {
49 setValue(pRow, "email", pEmail);
50 }
51
52 public String getOrganization(final int pRow) {
53 return getValue(pRow, "organization");
54 }
55
56 public void setOrganization(final int pRow, final String pOrganization) {
57 setValue(pRow, "organization", pOrganization);
58 }
59
60 public String getUrl(final int pRow) {
61 return getValue(pRow, "url");
62 }
63
64 public void setUrl(final int pRow, final String pUrl) {
65 setValue(pRow, "url", pUrl);
66 }
67
68 public String getTimezone(final int pRow) {
69 return getValue(pRow, "timezone");
70 }
71
72 public void setTimezone(final int pRow, final String pTimezone) {
73 setValue(pRow, "timezone", pTimezone);
74 }
75
76 public final PsiTeamMemberRoles getRoles(final int pRow) {
77 PsiTeamMemberRoles props = rolesCache.get(pRow);
78 if (props == null) {
79 StringBuilder buf = new StringBuilder(psi.getContainerPath().getPath());
80 buf.append('/').append(psi.getRowTagName());
81 buf.append('[').append(pRow).append(']');
82 buf.append('/').append("roles");
83
84 props = new PsiTeamMemberRoles(getXmlFile(), buf.toString());
85 rolesCache.put(pRow, props);
86 }
87
88 return props;
89 }
90 }