Electric generators: types and most common uses

An error occurred while processing the template.
Java method "com.sun.proxy.$Proxy893.getArticle(long, String)" threw an exception when invoked on com.sun.proxy.$Proxy893 object "com.liferay.journal.service.impl.JournalArticleLocalServiceImpl@2115fe8a"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign article = journalArticleLocal...  [in template "20096#20121#TPL_DETALLE_NOTICIA" at line 92, column 1]
----
1<script src="/o/cyclica-theme/js/jscroll.js"></script> 
2<style> 
3p.component-title.h4 { opacity:0;} 
4p.component-title.h4.loaded { opacity:1;} 
5 
6.metadata-author { 
7    display: none; 
8
9.layout-page > #content { 
10background-color:#fff; 
11
12div#wrapper.layout-page { 
13overflow-x:inherit; 
14
15p.component-title.h4 span.asset-title.d-inline { 
16    font-size: 14px; 
17    font-family: Maison Neue; 
18    font-weight: 400; 
19    line-height: 16px; 
20    letter-spacing: 0.24px; 
21		    position: relative; 
22    left: -2px; 
23
24p.component-title.h4 a.header-back-to.lfr-portal-tooltip { 
25display:none !important; 
26    background-color: #e4e4e4; 
27    width: 24px; 
28    height: 24px; 
29    display: flex; 
30    justify-content: center; 
31    align-items: center; 
32    border-radius: 3px; 
33    margin-right: 8px; 
34		box-shadow:none; 
35		font-size:12px; 
36		 
37
38p.component-title.h4 > a:first-child { 
39    position: relative; 
40    top: 3px; 
41
42p.component-title.h4 a i.i-r.icon-Chevron-Right { 
43    display: none !important; 
44
45p.component-title.h4 a { 
46    font-size: 14px; 
47    font-weight: 400; 
48    color: #696969; 
49    outline: 0 !important; 
50
51/* 
52p.component-title.h4 { 
53    min-height: 25px; 
54    opacity: 0; 
55
56 
57p.component-title.h4.loaded { 
58    opacity: 1; 
59}*/ 
60 
61p.component-title.h4 i.i-r.icon-Chevron-Right { 
62    margin-left: 0px !important; 
63    position: relative; 
64    top: 4px; 
65		    min-width: 1px !important; 
66    width: 18px; 
67    font-size: 18px !important; 
68		min-height:14px !important; 
69
70 
71p.component-title.h4 span.asset-title.d-inline { 
72    color: #1c1c1c; 
73    font-weight: normal !important; 
74
75p.component-title.h4 > a { 
76    outline: 0; 
77		color: #696969 !important; 
78		box-shadow:none !important; 
79
80.align-items-center.d-flex.mb-2 p.component-title.h4 { 
81    padding-top: 16px; 
82    padding-bottom: 16px; 
83    margin: 0px; 
84
85 
86.align-items-center.d-flex.mb-2 { 
87    margin: 0px !important; 
88
89</style> 
90 
91<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
92<#assign article = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data)> 
93<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")> 
94<#assign asset = assetEntryLocalService.getEntry('com.liferay.journal.model.JournalArticle', article.resourcePrimKey) > 
95 
96<#assign displaydate = .vars['reserved-article-display-date'].data /> 
97<#assign getDate = dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", displaydate, localeUtil.getDefault()) /> 
98 
99<#assign day=getDate?string["d"] /> 
100<#if day?length == 1 > 
101<#assign day="0"+getDate?string["d"] /> 
102</#if> 
103 
104<section class="detalle-noticia low-s"> 
105 
106	<#if (Titulo.getData())??> 
107		<h1 class="titulo-noticia high-l">${Titulo.getData()}</h1> 
108	</#if> 
109	 
110	<div class="tiempo-lectura"> 
111	<div class="tiempo-lectura-content"> 
112		<ul class="cat-names"> 
113			<#list asset.getTags() as entry> 
114					 <li class="tipo">${entry.name}</li> 
115			</#list> 
116		</ul> 
117		<div class="separation-time"></div> 
118		<div class="time"> 
119			<#if (lectura.getData())??> 
120				${lectura.getData()} 
121			</#if> 
122		</div> 
123	</div> 
124	</div> 
125	 
126	<div class="imagen-destacada"> 
127	 
128		<#assign imgPc='' /> 
129		<#assign imgPcTitle=''/> 
130		<#assign imgTablet='' /> 
131		<#assign imgMobile='' /> 
132 
133 
134		<#if (imagenPrincipal.getData())?? && imagenPrincipal.getData() != ""> 
135			<#assign imgPc=imagenPrincipal.getData() /> 
136			<#assign imgTablet=imagenPrincipal.getData() /> 
137			<#assign imgMobile=imagenPrincipal.getData() /> 
138			<#assign imgPcTitle=imagenPrincipal.getAttribute("alt") /> 
139		</#if> 
140 
141		<#if (ImageTablet.getData())?? && ImageTablet.getData() != ""> 
142			<#assign imgTablet=ImageTablet.getData() /> 
143		</#if> 
144 
145		<#if (ImageMobile.getData())?? && ImageMobile.getData() != ""> 
146			<#assign imgMobile=ImageMobile.getData() /> 
147		</#if> 
148		 
149		<#if imgPc?has_content> 
150			<picture> 
151				<source media="(max-width: 959px)" srcset="${imgTablet}" /> 
152				<source media="(max-width: 639px)" srcset="${imgMobile}" /> 
153				<img src="${imgPc}" alt="${imgPcTitle}" /> 
154			</picture> 
155		</#if> 
156 
157	</div> 
158	 
159	<div class="contenido-noticia"> 
160		<div class="noticia-anclas"> 
161		<#if content.getSiblings()?has_content> 
162			<ul> 
163				<#assign selected="selected" /> 
164				<#list content.getSiblings() as cur_content> 
165					<#if cur_content.TituloSeccion.getData()?has_content && (cur_content.TituloSeccion.getData())??> 
166						<li class="low-xs ${selected}"><a href="#anchor-${cur_content?index}" data-anchor="anchor-${cur_content?index}"><p class="square-list"></p><p>${cur_content.TituloSeccion.getData()}</p></a></li> 
167						<#assign selected="" /> 
168					</#if> 
169				</#list> 
170			</ul> 
171			</#if> 
172		</div> 
173		<div class="noticia-content low-s"> 
174		  <p class="news-date mid-s">${day} ${getDate?string["MMMM"]}, ${getDate?string["yyyy"]}</p> 
175			<#if content.getSiblings()?has_content> 
176				<#list content.getSiblings() as cur_content> 
177				 
178				<#assign ocultarH2="" /> 
179				<#if getterUtil.getBoolean(cur_content.ocultarTitulo.getData())> 
180					<#assign ocultarH2="ocultar-h2" /> 
181				<#else> 
182					<#assign ocultarH2="" /> 
183				</#if> 
184				 
185					<#if (cur_content.TituloSeccion.getData())??> 
186						<h2 id="anchor-${cur_content?index}" class="high-s ${ocultarH2}">${cur_content.TituloSeccion.getData()}</h2> 
187					</#if> 
188					<#if (cur_content.ContenidoSeccion.getData())??> 
189						${cur_content.ContenidoSeccion.getData()?replace('<p><cite>','<p class="cita"><cite>')} 
190					</#if> 
191				</#list> 
192			</#if> 
193		</div> 
194	</div> 
195	 
196</section> 
197 
198<script> 
199$(document).ready(function(){ 
200 
201let getBlogName=$("#footerBlog").html(); 
202let getBlogUrl=$("#footerBlog").attr("href"); 
203let getHomeUrl=$("#heading a.logo.custom-logo").attr("href"); 
204 
205 
206$("p.component-title.h4").prepend('<a href="'+getHomeUrl+'"><i class="icon-Home"></i></a><i class="i-r icon-Chevron-Right"></i><a href="'+getBlogUrl+'">'+getBlogName+'</a><i class="i-r icon-Chevron-Right"></i>'); 
207$("p.component-title.h4").addClass("loaded"); 
208 
209 
210	$("p.component-title.h4 a.header-back-to.lfr-portal-tooltip").click(function(e){ 
211 
212		e.preventDefault(); 
213		history.back(); 
214	 
215	}); 
216	$('.noticia-anclas li a').on('click', function(e){ 
217			e.preventDefault(); 
218			var href = $(this).attr('href'); 
219			$('html, body').animate({  
220					scrollTop:$(href).offset().top 
221 
222			},'slow'); 
223	}); 
224	 
225				/* Page Scroll to id fn call */ 
226				$(".noticia-content h2").mPageScroll2id({ 
227					highlightSelector:".noticia-anclas ul li a" 
228				}); 
229				 
230				/* demo functions */ 
231				$("a[rel='next']").click(function(e){ 
232					e.preventDefault(); 
233					var to=$(this).parent().parent("section").next().attr("id"); 
234					$.mPageScroll2id("scrollTo",to); 
235				}); 
236 
237}); 
238 
239</script>