001
014
015 package com.liferay.portal.googleapps;
016
017 import com.liferay.portal.kernel.googleapps.GNickname;
018 import com.liferay.portal.kernel.googleapps.GNicknameManager;
019 import com.liferay.portal.kernel.googleapps.GoogleAppsException;
020 import com.liferay.portal.kernel.log.Log;
021 import com.liferay.portal.kernel.log.LogFactoryUtil;
022 import com.liferay.portal.kernel.util.GetterUtil;
023 import com.liferay.portal.kernel.util.StringBundler;
024 import com.liferay.portal.kernel.util.StringPool;
025 import com.liferay.portal.kernel.xml.Document;
026 import com.liferay.portal.kernel.xml.Element;
027 import com.liferay.portal.kernel.xml.SAXReaderUtil;
028
029 import java.util.ArrayList;
030 import java.util.List;
031
032
035 public class GNicknameManagerImpl
036 extends GBaseManagerImpl implements GNicknameManager {
037
038 public GNicknameManagerImpl(GoogleApps googleApps) {
039 super(googleApps);
040
041 GAuthenticator gAuthenticator = googleApps.getGAuthenticator();
042
043 StringBundler sb = new StringBundler(4);
044
045 sb.append(APPS_URL);
046 sb.append(StringPool.SLASH);
047 sb.append(gAuthenticator.getDomain());
048 sb.append("/nickname/2.0");
049
050 nicknameURL = sb.toString();
051 }
052
053 @Override
054 public void addGNickname(long userId, String nickname)
055 throws GoogleAppsException {
056
057 Document document = SAXReaderUtil.createDocument();
058
059 Element atomEntryElement = addAtomEntry(document);
060
061 addAtomCategory(atomEntryElement, "nickname");
062
063 Element appsLoginElement = atomEntryElement.addElement("apps:login");
064
065 appsLoginElement.addAttribute("userName", String.valueOf(userId));
066
067 Element appsNicknameElement = atomEntryElement.addElement(
068 "apps:nickname");
069
070 appsNicknameElement.addAttribute("name", nickname);
071
072 submitAdd(nicknameURL, document);
073 }
074
075 @Override
076 public void deleteGNickname(String nickname) throws GoogleAppsException {
077 submitDelete(getNicknameURL(nickname));
078 }
079
080 @Override
081 public GNickname getGNickname(String nickname) throws GoogleAppsException {
082 Document document = getDocument(getNicknameURL(nickname));
083
084 if (hasError(document)) {
085 if (_log.isInfoEnabled()) {
086 _log.info(getErrorMessage(document));
087 }
088
089 return null;
090 }
091
092 Element atomEntryElement = document.getRootElement();
093
094 return getGNickname(atomEntryElement);
095 }
096
097 @Override
098 public List<GNickname> getGNicknames() throws GoogleAppsException {
099 List<GNickname> gNicknames = new ArrayList<GNickname>();
100
101 getGNicknames(gNicknames, nicknameURL);
102
103 return gNicknames;
104 }
105
106 protected GNickname getGNickname(Element atomEntryElement) {
107 GNickname gNickname = new GNickname();
108
109 Element appsLoginElement = atomEntryElement.element(
110 getAppsQName("login"));
111 Element appsNicknameElement = atomEntryElement.element(
112 getAppsQName("nickname"));
113
114 String nickname = appsNicknameElement.attributeValue("name");
115
116 gNickname.setNickname(nickname);
117
118 long userId = GetterUtil.getLong(
119 appsLoginElement.attributeValue("userName"));
120
121 gNickname.setUserId(userId);
122
123 return gNickname;
124 }
125
126 protected void getGNicknames(final List<GNickname> gNicknames, String url)
127 throws GoogleAppsException {
128
129 Document document = getDocument(url);
130
131 Element atomFeedElement = document.getRootElement();
132
133 List<Element> atomEntryElements = atomFeedElement.elements(
134 getAtomQName("entry"));
135
136 for (Element atomEntryElement : atomEntryElements) {
137 GNickname gNickname = getGNickname(atomEntryElement);
138
139 gNicknames.add(gNickname);
140 }
141
142 new GetNextItems(url, atomFeedElement) {
143
144 @Override
145 public void getNextItems(String nextURL)
146 throws GoogleAppsException {
147
148 getGNicknames(gNicknames, nextURL);
149 }
150
151 };
152 }
153
154 protected String getNicknameURL(String nickname) {
155 return nicknameURL.concat(StringPool.SLASH).concat(nickname);
156 }
157
158 protected String nicknameURL;
159
160 private static Log _log = LogFactoryUtil.getLog(GNicknameManagerImpl.class);
161
162 }