1
14
15 package com.liferay.portal.googleapps;
16
17 import com.liferay.portal.kernel.googleapps.GNickname;
18 import com.liferay.portal.kernel.googleapps.GNicknameManager;
19 import com.liferay.portal.kernel.googleapps.GoogleAppsException;
20 import com.liferay.portal.kernel.log.Log;
21 import com.liferay.portal.kernel.log.LogFactoryUtil;
22 import com.liferay.portal.kernel.util.GetterUtil;
23 import com.liferay.portal.kernel.util.StringBundler;
24 import com.liferay.portal.kernel.util.StringPool;
25 import com.liferay.portal.kernel.xml.Document;
26 import com.liferay.portal.kernel.xml.Element;
27 import com.liferay.portal.kernel.xml.SAXReaderUtil;
28
29 import java.util.ArrayList;
30 import java.util.List;
31
32
37 public class GNicknameManagerImpl
38 extends GBaseManagerImpl implements GNicknameManager {
39
40 public GNicknameManagerImpl(GoogleApps googleApps) {
41 super(googleApps);
42
43 GAuthenticator gAuthenticator = googleApps.getGAuthenticator();
44
45 StringBundler sb = new StringBundler(4);
46
47 sb.append(APPS_URL);
48 sb.append(StringPool.SLASH);
49 sb.append(gAuthenticator.getDomain());
50 sb.append("/nickname/2.0");
51
52 nicknameURL = sb.toString();
53 }
54
55 public void addGNickname(long userId, String nickname)
56 throws GoogleAppsException {
57
58 Document document = SAXReaderUtil.createDocument();
59
60 Element atomEntryElement = addAtomEntry(document);
61
62 addAtomCategory(atomEntryElement, "nickname");
63
64 Element appsLoginElement = atomEntryElement.addElement("apps:login");
65
66 appsLoginElement.addAttribute("userName", String.valueOf(userId));
67
68 Element appsNicknameElement = atomEntryElement.addElement(
69 "apps:nickname");
70
71 appsNicknameElement.addAttribute("name", nickname);
72
73 submitAdd(nicknameURL, document);
74 }
75
76 public void deleteGNickname(String nickname) throws GoogleAppsException {
77 submitDelete(getNicknameURL(nickname));
78 }
79
80 public GNickname getGNickname(String nickname) throws GoogleAppsException {
81 Document document = getDocument(getNicknameURL(nickname));
82
83 if (hasError(document)) {
84 if (_log.isInfoEnabled()) {
85 _log.info(getErrorMessage(document));
86 }
87
88 return null;
89 }
90
91 Element atomEntryElement = document.getRootElement();
92
93 return getGNickname(atomEntryElement);
94 }
95
96 public List<GNickname> getGNicknames() throws GoogleAppsException {
97 List<GNickname> gNicknames = new ArrayList<GNickname>();
98
99 getGNicknames(gNicknames, nicknameURL);
100
101 return gNicknames;
102 }
103
104 protected GNickname getGNickname(Element atomEntryElement) {
105 GNickname gNickname = new GNickname();
106
107 Element appsLoginElement = atomEntryElement.element(
108 getAppsQName("login"));
109 Element appsNicknameElement = atomEntryElement.element(
110 getAppsQName("nickname"));
111
112 String nickname = appsNicknameElement.attributeValue("name");
113
114 gNickname.setNickname(nickname);
115
116 long userId = GetterUtil.getLong(
117 appsLoginElement.attributeValue("userName"));
118
119 gNickname.setUserId(userId);
120
121 return gNickname;
122 }
123
124 protected void getGNicknames(final List<GNickname> gNicknames, String url)
125 throws GoogleAppsException {
126
127 Document document = getDocument(url);
128
129 Element atomFeedElement = document.getRootElement();
130
131 List<Element> atomEntryElements = atomFeedElement.elements(
132 getAtomQName("entry"));
133
134 for (Element atomEntryElement : atomEntryElements) {
135 GNickname gNickname = getGNickname(atomEntryElement);
136
137 gNicknames.add(gNickname);
138 }
139
140 new GetNextItems(url, atomFeedElement) {
141
142 public void getNextItems(String nextURL)
143 throws GoogleAppsException {
144
145 getGNicknames(gNicknames, nextURL);
146 }
147
148 };
149 }
150
151 protected String getNicknameURL(String nickname) {
152 return nicknameURL.concat(StringPool.SLASH).concat(nickname);
153 }
154
155 protected String nicknameURL;
156
157 private static Log _log = LogFactoryUtil.getLog(GNicknameManagerImpl.class);
158
159 }