GLOBE Projects

GLOBE Side Navigation

An error occurred while processing the template.
Java method "com.sun.proxy.$Proxy41.getUserByEmailAddress(long, String)" threw an exception when invoked on com.sun.proxy.$Proxy41 object "gov.globe.liferay.portal.impl.service.user.GlobeUserLocalServiceWrapper2@2edcfcec"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: user = userLocalService.getUserByEmai...  [in template "10132#10165#GLOBE-PROJECT-TEMPLATE" at line 64, column 25]
----
1<#assign 
2    orgArray = [] 
3    userArray = [] 
4    badgeArray = [] 
5    languageArray = [] 
6    protocolArray = [] 
7    reportTypesArray = [] 
8    orgLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService") 
9    userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService") 
10    groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") 
11    userGroupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserGroupLocalService") 
12    idLocalService = serviceLocator.findService("gov.globe.util.idlookup.service.IDLookupLocalService") 
13    assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") 
14    globeMemberId = idLocalService.getId("globe.usergroupid.globe_members") 
15    candidateId = idLocalService.getId("globe.usergroupid.candidates") 
16    studentsId = idLocalService.getId("globe.usergroupid.students") 
17    projectDate = getterUtil.getString(project_date.getData()) 
18    reportType = "" 
19    accountType = "" 
20    videoLink = "" 
21    presentationLink = "" 
22/> 
23 
24<#if (project_authororganization.getSiblings()?has_content)> 
25    <#list project_authororganization.getSiblings() as authOrg > 
26        <#assign 
27            accountTypeArr = stringUtil.split(authOrg.getData(), "@@@") 
28            dataArray = stringUtil.split(accountTypeArr[0], "$$$") 
29        /> 
30        <#if (accountTypeArr?size > 1)> 
31            <#assign 
32                accountType = accountTypeArr[1] 
33            /> 
34        <#else> 
35            <#assign 
36                accountType = "regular" 
37            /> 
38        </#if> 
39         
40        <#if (dataArray?has_content && dataArray?size > 0) > 
41            <#assign orgValue = dataArray[0] /> 
42            <#if (orgValue?is_string && !orgValue?eval?is_number)> 
43                <#assign org = orgLocalService.getOrganization(company.getCompanyId(), orgValue) /> 
44            <#else> 
45                <#assign org = orgLocalService.getOrganization(orgValue?eval) /> 
46            </#if> 
47            <#assign 
48                orgName = org.getName() 
49                group = org.getGroup() 
50                orgURL = group.getFriendlyURL() 
51                orgLink = "<a href='/web${orgURL}'>${orgName}</a>" 
52                orgArray = orgArray + [orgLink] 
53            /> 
54            <#if (dataArray?size > 1) > 
55                <#assign 
56                    userData = dataArray[1] 
57                /> 
58                 
59                <#-- check if name has an email --> 
60                <#if (userData?contains("("))> 
61                    <#assign 
62                        emailAddress = stringUtil.extractLast(userData, "(") 
63                        emailAddress = stringUtil.extractFirst(emailAddress, ")") 
64                        user = userLocalService.getUserByEmailAddress(company.getCompanyId(), emailAddress) 
65                    /> 
66                    <#if user.isActive() > 
67                        <#if (userGroupLocalService.hasUserUserGroup(user.getUserId(), globeMemberId) 
68                                || userGroupLocalService.hasUserUserGroup(user.getUserId(), candidateId) 
69                                || userGroupLocalService.hasUserUserGroup(user.getUserId(), studentsId)) > 
70                            <#assign 
71                                groupUser = groupLocalService.getGroup(user.getGroup().getGroupId()) 
72                                userLink = "<a href='/web${groupUser.getFriendlyURL()}'>${user.getFullName()}</a>" 
73                            /> 
74                        <#else> 
75                            <#assign 
76                                userLink = "${user.getFullName()}" 
77                            /> 
78                        </#if> 
79                    <#else> 
80                        <#assign 
81                            userLink = "${user.getFullName()} (inactive)" 
82                        /> 
83                    </#if> 
84                    <#assign 
85                        userArray = userArray + [userLink] 
86                    /> 
87                 
88                <#else> 
89                    <#-- no email - just show name --> 
90                    <#assign 
91                        userArray = userArray + [userData] 
92                    /> 
93                </#if> 
94                 
95            </#if> 
96        </#if> 
97    </#list> 
98</#if> 
99<#if (project_badges.getChildren()?has_content)> 
100    <#list project_badges.getChildren() as badge > 
101        <#if (badge.getData()?has_content && badge.getData()?eval) > 
102            <#assign badgeArray = badgeArray + [languageUtil.get(locale, badge.getName())] /> 
103        </#if> 
104    </#list> 
105</#if> 
106<#if (project_report_type_2?has_content) > 
107    <#-- this is the NEW way of specifying report types --> 
108    <#list project_report_type_2.getChildren() as reportTypeObj > 
109        <#if (reportTypeObj.getData()?has_content && (reportTypeObj.getName() == "ivss_report" || reportTypeObj.getName() == "mission_earth_report")) > 
110            <#assign reportType = reportTypeObj.getName() /> 
111        </#if> 
112        <#if (reportTypeObj.getData()?has_content && reportTypeObj.getData()?eval) > 
113            <#switch reportTypeObj.getName() > 
114                <#case "ivss_report"> 
115                    <#assign reportTypesArray = reportTypesArray + ["International Virtual Science Symposium Report"] /> 
116                <#break > 
117                <#case "standard_research_report"> 
118                    <#assign reportTypesArray = reportTypesArray + ["Standard Research Report"] /> 
119                <#break > 
120                <#case "mission_earth_report"> 
121                    <#assign reportTypesArray = reportTypesArray + ["Mission Earth Report"] /> 
122                <#break > 
123                <#case "mission_mosquito_report"> 
124                    <#assign reportTypesArray = reportTypesArray + ["Mission Mosquito Report"] /> 
125                <#break > 
126                <#case "student_research_symposia_report"> 
127                    <#assign reportTypesArray = reportTypesArray + ["U.S. Student Research Symposia (SRS)"] /> 
128                <#break > 
129            </#switch> 
130        </#if> 
131    </#list> 
132<#elseif (type_student_report?has_content) > 
133    <#-- this is the OLD way of specifying the report type --> 
134    <#assign 
135        project_report_type = type_student_report.getChild("project_report_type") 
136    /> 
137    <#if (project_report_type.getData() == "science_fair_report") > 
138        <#assign  
139            reportType = "ivss_report" 
140            reportTypesArray = reportTypesArray + ["International Virtual Science Symposium Report"] 
141        /> 
142    <#elseif (project_report_type.getData() == "standard_report") > 
143        <#assign 
144            reportType = "standard_research_report" 
145            reportTypesArray = reportTypesArray + ["Standard Research Report"] 
146        /> 
147    <#elseif (project_report_type.getData() == "mission_earth_report") > 
148        <#assign 
149            reportType = "mission_earth_report" 
150            reportTypesArray = reportTypesArray + ["Mission Earth Report"] 
151        /> 
152    </#if> 
153</#if> 
154 
155<#if report_language?has_content > 
156    <#list report_language.getChildren() as language> 
157        <#if (language.getData()?has_content && language.getData()?eval) > 
158            <#if (language.getName() == "other") > 
159                <#assign otherLanguage = language.getChild("other_string") /> 
160                <#if (otherLanguage.getData()?has_content) > 
161                    <#assign languageArray = languageArray +  
162                        [stringUtil.upperCaseFirstLetter(language.getName()) +  
163                            " (" + otherLanguage.getData() + ")"] /> 
164                </#if> 
165            <#else> 
166                <#assign languageArray = languageArray + [stringUtil.upperCaseFirstLetter(language.getName())] /> 
167            </#if> 
168        </#if> 
169    </#list> 
170</#if> 
171<#if protocol_checkboxes.getData()?has_content > 
172    <#assign protocolIds = stringUtil.split(protocol_checkboxes.getData()) /> 
173    <#list protocolIds as protocolId > 
174        <#if (protocolId?has_content) > 
175            <#assign 
176                category = assetCategoryLocalService.getCategory(protocolId?eval) 
177                protocolArray = protocolArray + [category.getName()] 
178            /> 
179        </#if> 
180    </#list> 
181</#if> 
182 
183<#if (proejct_video_url??) > 
184    <#if (proejct_video_url.getData()?has_content) > 
185        <#assign videoLink = proejct_video_url.getData() /> 
186    </#if> 
187</#if> 
188 
189<#if (project_poster_presentation??) > 
190    <#if (project_poster_presentation.getData()?has_content) > 
191        <#assign presentationLink = project_poster_presentation.getData() /> 
192    </#if> 
193</#if> 
194 
195<#if (project_presentation?has_content) > 
196    <#if project_presentation.getChild("proejct_video_url")??> 
197        <#assign  
198            proejct_video_url = project_presentation.getChild("proejct_video_url") 
199            videoLink = proejct_video_url.getData() 
200        /> 
201    </#if> 
202    <#if project_presentation.getChild("project_poster_presentation")??> 
203        <#assign  
204            project_poster_presentation = project_presentation.getChild("project_poster_presentation") 
205            presentationLink = project_poster_presentation.getData() 
206        /> 
207    </#if> 
208</#if> 
209 
210<#assign 
211    organizations = stringUtil.merge(orgArray, ", ") 
212    users = stringUtil.merge(userArray, ", ") 
213    badges = stringUtil.merge(badgeArray, ", ") 
214    languages = stringUtil.merge(languageArray, ", ") 
215    reportTypes = stringUtil.merge(reportTypesArray, ", ") 
216    protocols = stringUtil.merge(protocolArray, ", ") 
217    projectImageUrl = project_thumbnail_image.getData() 
218/> 
219<#if (validator.isNull(projectImageUrl) || projectImageUrl == "") > 
220    <#assign 
221        projectImageUrl = "/o/gov-globe-main-theme/images/GLOBElogo-2015.png" 
222    /> 
223</#if> 
224 
225<style type="text/css" > 
226    #report-container #report-details-container { 
227        display: flex; 
228
229    #report-container #report-details-container #report-details { 
230        flex: 1; 
231
232    #report-container #report-details-container .report-data-row { 
233        padding-bottom: 7px; 
234
235    #report-container #report-details-container .report-data-row .report-data-title { 
236        font-weight: 700; 
237
238    #report-container #report-details-container .report-data-row .report-data-value { 
239        padding:0px 10px; 
240
241    #report-container #report-image { 
242        width: 225px; 
243        vertical-align: top; 
244
245    #report-container #report-image img { 
246        height: 200px; 
247        object-fit: cover; 
248
249    #report-container #report-url-description { 
250        margin: 20px 0 0; 
251
252    #report-container #report-url-description #report-description { 
253        margin-top: 20px; 
254
255</style> 
256 
257<div id="report-container"> 
258    <h2 style="padding-bottom:10px;">${project_title.getData()}</h2> 
259    <div id="report-details-container"> 
260        <div id="report-details"> 
261            <div class="report-data-row" ><span class="report-data-title" >Organization(s):</span><span class="report-data-value" >${organizations}</span></div> 
262            <div class="report-data-row" ><span class="report-data-title" >Student(s):</span><span class="report-data-value" >${project_authors.getData()}</span></div> 
263            <div class="report-data-row" ><span class="report-data-title" >Grade Level:</span><span class="report-data-value" >${languageUtil.get(locale,project_grade.getData())}</span></div> 
264             
265            <div class="report-data-row" ><span class="report-data-title" > 
266            <#if (accountType == 'obs_cs' || accountType == 'obs_school')> 
267                Teacher:</span><span class="report-data-value">${users}</span></div> 
268            <#else> 
269                GLOBE Teacher:</span><span class="report-data-value">${users}</span></div> 
270            </#if> 
271 
272            <div class="report-data-row" ><span class="report-data-title" >Contributors:</span><span class="report-data-value" >${project_additional_authors.getData()}</span></div> 
273            <div class="report-data-row" ><span class="report-data-title" >Report Type(s):</span><span class="report-data-value" >${reportTypes}</span></div> 
274            <div class="report-data-row" ><span class="report-data-title" >Protocols:</span><span class="report-data-value" >${protocols}</span></div> 
275 
276            <#if (reportType == "ivss_report" || reportType == "mission_earth_report") > 
277                <#if (videoLink?has_content && videoLink?length > 0) > 
278                    <#if (!stringUtil.startsWith(videoLink, "http://") && !stringUtil.startsWith(videoLink, "https://")) > 
279                        <#assign videoLink = "http://" + videoLink /> 
280                    </#if> 
281                    <div class="report-data-row"> 
282                        <span class="report-data-title">Presentation Video:</span><span  
283                                class="report-data-value" > 
284                            <a href="${videoLink}" target="_blank">View Video</a> 
285                        </span> 
286                    </div> 
287                </#if> 
288 
289 
290 
291                <#if (presentationLink?has_content && presentationLink?length > 0) > 
292                    <div class="report-data-row"> 
293                        <span class="report-data-title">Presentation Poster:</span><span  
294                                class="report-data-value"> 
295                            <a href="${presentationLink}" target="_blank">View Document</a> 
296                        </span> 
297                    </div> 
298                </#if> 
299            </#if> 
300            <#if (reportType == "ivss_report") > 
301                <div class="report-data-row"> 
302                    <span class="report-data-title">Optional Badges:</span><span  
303                            class="report-data-value" >${badges}</span> 
304                </div> 
305            </#if> 
306            <div class="report-data-row" > 
307                <span class="report-data-title" >Language(s):</span><span  
308                        class="report-data-value" >${languages}</span> 
309            </div> 
310            <div class="report-data-row" > 
311                <span class="report-data-title" >Date Submitted:</span><span  
312                        class="report-data-value" >${projectDate}</span> 
313            </div> 
314        </div> 
315        <div id="report-image" > 
316            <img src="${projectImageUrl}" alt="${project_thumbnail_alt_tag.getData()}"> 
317        </div> 
318    </div> 
319    <div id="report-url-description"> 
320        <#if (project_linkto_document.getData() != "")> 
321            <div > 
322                <a href="${project_linkto_document.getData()}" target="_blank"><b>View Research Report</b></a><br> 
323            </div> 
324        </#if> 
325        <div id="report-description"> 
326            ${project_description.getData()} 
327        </div> 
328    </div> 
329</div> 



Comments

This is a nice project confirming global patterns at the local scale. Did any of your results surprise you? Would you change anything if you were to do this study again?
How did you become interested in this project?

What was the most challenging part of the research?
Thank you for sharing your project. You report does a nice job of describing it clearly. What do you think might be some possible implications of your findings?