quarta-feira, 18 de janeiro de 2012

Liferay: Buscando imagens no Image Gallery

HTML:

<form action="<liferay-portlet:actionURL name="igFind" portletConfiguration="true" />" method="post" name="<portlet:namespace />fm">

<input type="text" name="<portlet:namespace />find" />

<input type="submit" value="Find" />

</form>




Classe Portlet:

import java.util.List;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;

import com.liferay.portal.kernel.dao.orm.DynamicQuery;
import com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil;
import com.liferay.portal.kernel.dao.orm.OrderFactoryUtil;
import com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.PortalClassLoaderUtil;
import com.liferay.portlet.imagegallery.model.IGImage;
import com.liferay.portlet.imagegallery.service.IGImageLocalServiceUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;

public class NewPortlet extends MVCPortlet {

public void igFind(ActionRequest request, ActionResponse response){

String find = ParamUtil.getString(request, "find");

ClassLoader loader = PortalClassLoaderUtil.getClassLoader();

DynamicQuery query = DynamicQueryFactoryUtil.forClass(IGImage.class, loader)
.add(PropertyFactoryUtil.forName("name").eq(find))
.addOrder(OrderFactoryUtil.asc("name"));

try {
List results = IGImageLocalServiceUtil.dynamicQuery(query, 0, 100);
for(IGImage ig : results){
System.out.println(ig.getName());
}
} catch (SystemException e) {
e.printStackTrace();
}
}
}

quarta-feira, 11 de janeiro de 2012

Resolvendo problemas de codificação nos textos.

Resolvendo problemas de codificação nos textos ao ler/gravar arquivos de texto utilizando InputStreamReader e OutputStreamWriter.

Para ler:

private void loadFile() {
StringBuilder conteudo = new StringBuilder(500);

try {
if (selectedFile.exists()) {
InputStreamReader is = new InputStreamReader(new FileInputStream(selectedFile), Charset.forName("iso-8859-1"));
BufferedReader reader = new BufferedReader(is);

String linha = null;
while ((linha = reader.readLine()) != null) {
conteudo.append(linha).append(System.getProperty("line.separator"));
}
reader.close();
}
} catch (FileNotFoundException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);


} catch (IOException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
}

jTextPaneContent.setText(conteudo.toString());
}

Para gravar:

private void saveFile() {

OutputStreamWriter osw = null;

try {
osw = new OutputStreamWriter(new FileOutputStream(selectedFile), Charset.forName("iso-8859-1"));
osw.write(jTextPaneContent.getText());

} catch (IOException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
} finally {
try {
if (osw != null) {
osw.close();
}
} catch (IOException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
}
}
}
Código fonte contendo um exemplo funcional.