Mostrando entradas con la etiqueta java. Mostrar todas las entradas
Mostrando entradas con la etiqueta java. Mostrar todas las entradas

Download file with GWT

Esta es una manera fácil de enviar desde GWT archivos al navegador para que los usuarios se los puedan descargar.

1. Hay que agregar un frame oculto en el HTML de la hosted page:
<div id="__gwt_downloadFrame" tabIndex='-1'></div>

2. Para iniciar la descarga poner este código en la parte cliente (código GWT):
public static void download(String p_uuid, String p_filename) { 
        String fileDownloadURL = "/fileDownloadServlet" 
                               + "?id=" + p_uuid 
                               + "&filename=" + 
URL.encode(p_filename); 
        Frame fileDownloadFrame = new Frame(fileDownloadURL); 
        fileDownloadFrame.setSize("0px", "0px"); 
        fileDownloadFrame.setVisible(false); 
        RootPanel panel = RootPanel.get("__gwt_downloadFrame"); 
        while (panel.getWidgetCount() > 0) 
            panel.remove(0); 
        panel.add(fileDownloadFrame); 
} 

3. Poner esto en el servlet que va a servir el archivo a descargar:
@Override 
protected void doGet(HttpServletRequest p_request, 
                         HttpServletResponse p_response) 
        throws ServletException, IOException { 
        String filename = p_request.getParameter("filename"); 
        if (filename == null) 
        { 
            p_response.sendError(SC_BAD_REQUEST, "Missing filename"); 
            return; 
        } 

        File file = /* however you choose to go about resolving 
filename */ 

        long length = file.length(); 
        FileInputStream fis = new FileInputStream(file); 
        p_response.addHeader("Content-Disposition", 
                             "attachment; filename=\"" + filename + 
"\""); 
        p_response.setContentType("application/octet-stream"); 
        if (length > 0 && length <= Integer.MAX_VALUE); 
            p_response.setContentLength((int)length); 
        ServletOutputStream out = p_response.getOutputStream(); 
        p_response.setBufferSize(32768); 
        int bufSize = p_response.getBufferSize(); 
        byte[] buffer = new byte[bufSize]; 
        BufferedInputStream bis = new BufferedInputStream(fis, 
bufSize); 
        int bytes; 
        while ((bytes = bis.read(buffer, 0, bufSize)) >= 0) 
            out.write(buffer, 0, bytes); 
        bis.close(); 
        fis.close(); 
        out.flush(); 
        out.close(); 
} 


Cómo solucionar un workspace de Eclipse corrupto

Al intentar abrir Eclipse (corriendo en Mac OS 10.8.2) llegaba hasta el punto en el cual cargaba el plugin de GWT y dejaba de cargar.

Aparentemente el problema era con los editors abiertos.

Lo que hice para solucionarlo fue:

1) Ir por consola hasta el directorio del workspace.

2) Mover el directorio .metadata/.plugins a .metadata/.plugins.failing

3) Arrancar Eclipse (genera un nuevo directorio .plugins)

4) Copiar el directorio org.eclipse.core.resources del backup al nuevo dir .plugins


cp -r .plugins.failing/org.eclipse.core.resources .plugins/org.eclipse.core.resources

5) Copiar los settings desde el backup

cp -r .plugins.failing/org.eclipse.core.runtime/.settings .plugins/org.eclipse.core.runtime/.settings

6) Arrancar Eclipse

7) Importar los proyectos (sin marcar el checkbox para copiar el proyecto al workspace porque ya se encuentran dentro de él).

8) Actualizar las dependencias de Maven.

GWT Hosted mode compilation no es compatible con Java 1.5

En un proyecto que estamos haciendo con GWT, en el cual tenemos que usar el Hosted Mode de GWT, pero sin Appengine estaba explotando la primera vez que se compilaba una jsp.

La solución la encontramos acá y básicamente hay que crear una clase que extienda de JDTCompiler y agregarla como argumento de la VM en la Run Configuration.

Entonces, primero hay que crear la siguiente clase:


public class JDTCompiler15 extends JDTCompilerAdapter {
       @Override
       public void setJavac(Javac attributes) {
               if (attributes.getTarget() == null) {
                       attributes.setTarget("1.5");
               }
               if (attributes.getSource() == null) {
                       attributes.setSource("1.5");
               }
               super.setJavac(attributes);
       }
}

Y luego hay que hacer click derecho sobre el proyecto > Run As > Run Configurations > seleccionar una de ellas y en VM arguments agregar lo siguiente:


-Dbuild.compiler="com.mypackage.JDTCompiler15"

How to use Apache James in MacOSx

1. Download James 2.3.2
2. Unzip it
3. Add this lines to run.sh

export JAVA_HOME="/Library/Java/Home"
export PHOENIX_JVM_OPTS="-Djava.net.preferIPv4Stack=true"

3. chmod 755 *.sh4. sudo sh run.sh

GWT Celltable ContextMenu in a Column

// create your column class
private class ContextMenuColumn extends Column<UserModel, String>{

  public ContextMenuColumn(Cell<String> cell) {
   super(cell);
  }

  @Override
  public String getValue(UserModel object) {
   return "/img/icons/contextual-menu.jpg";
  }
  
  @Override
  public void onBrowserEvent(Context context, Element elem, UserModel object, NativeEvent event) {
   final UserModel user = object;
   
   int left = elem.getParentElement().getAbsoluteLeft();
      int top = elem.getParentElement().getAbsoluteTop();
      
      final DialogBox dialog = new DialogBox();
      dialog.setText(constants.Actions());
      
      Anchor lnkEdit = new Anchor(constants.Edit());
      lnkEdit.addClickHandler(new ClickHandler() {
    @Override
    public void onClick(ClickEvent event) {
     placeController.goTo(new ControlPanelUsersEditPlace(user.getUserId()));
     dialog.hide();
    }
   });
      
      Anchor lnkUpdateState = new Anchor(user.getEnable() == false ? constants.Enable() : constants.Disable());
      lnkUpdateState.addClickHandler(new ClickHandler() {
    @Override
    public void onClick(ClickEvent event) {
     presenter.setEnabled(user.getUserId(), !user.getEnable());
     dialog.hide();
    }
   });
      
      Anchor lnkResetPassword = new Anchor(constants.ChangePassword());
      lnkResetPassword.addClickHandler(new ClickHandler() {
    @Override
    public void onClick(ClickEvent event) {
     presenter.resetPassword(user.getUserId());
     dialog.hide();
    }
   });
      
      Anchor lnkDelete = new Anchor(constants.Delete());
      lnkDelete.addClickHandler(new ClickHandler() {
    @Override
    public void onClick(ClickEvent event) {
     presenter.delete(user.getUserId());
     dialog.hide();
    }
   });
      
      VerticalPanel pnl = new VerticalPanel();
      pnl.add(lnkEdit);
      pnl.add(lnkUpdateState);
      pnl.add(lnkResetPassword);
      pnl.add(lnkDelete);
      
      dialog.setWidget(pnl);
      dialog.setPopupPosition(left - 20, top + 10);
      dialog.setAutoHideEnabled(true);
      dialog.show();
  }
 }

// create your column and add it to your table
Column<UserModel, String> contextMenuColumn = new ContextMenuColumn(new MyImageCell());

table.addColumn(contextMenuColumn);

GWT Celltable add a Row Handler

Handler<UserModel> rowHandler = new Handler<UserModel>() {
@Override
public void onCellPreview(CellPreviewEvent<UserModel> event) {
if (event.getColumn() != 0 && event.getNativeEvent().getType().equals("click")) {
placeController.goTo(new CompanyUsersEditPlace(event.getValue().getUserId(), user.getCompanyId()));
}
}
};

table.addCellPreviewHandler(rowHandler);

GWT Celltable and Checkbox Column

// you need a selection model
private final MultiSelectionModel<usermodel> selectionModel = new MultiSelectionModel<usermodel>(operatorKeyProvider);

// you need a selection manager
private final DefaultSelectionEventManager<usermodel> selectionManager = DefaultSelectionEventManager.createCheckboxManager();

// you need the table ;)
@UiField CellTable<usermodel> table;

// then ...
selectionModel.addSelectionChangeHandler(
new SelectionChangeEvent.Handler() {
public void onSelectionChange(SelectionChangeEvent event) {
StringBuilder sb = new StringBuilder();
boolean first = true;
List&lt;UserModel&gt; selected = new ArrayList&lt;UserModel&gt;(selectionModel.getSelectedSet());

Collections.sort(selected);
for (UserModel value : selected) {
if (first) {
first = false;
} else {
sb.append(&quot;, &quot;);
}
sb.append(value.getFirstName());
}
}
});

table.setSelectionModel(selectionModel, selectionManager);

// create your column
Column<UserModel, Boolean> checkBoxColumn = new Column<UserModel, Boolean>(new CheckboxCell()) {

   @Override
   public Boolean getValue(UserModel object) {
    return selectionModel.isSelected(object);
   }
   
   @Override
   public FieldUpdater<UserModel, Boolean> getFieldUpdater() {
       return null;
      } 
   
  };

Cómo setear un JDK en eclipse.ini

Luego de instalar Maven en Eclipse, aparece un cartel solictando que haya seteado un JDK en eclipse.ini


1. Editar el archivo eclipse.ini (que se encuentra dentro del directorio de Eclipse).
2. Poner en la primer linea del archivo:


-vm
path/to/jdk/bin/javaw.exe

Cómo agregar una JDK en Eclipse

1. Window -> Preferences -> Java -> Installed JREs
2. Add -> Standard VM -> path/al/jdk (por ejemplo: "C:\Archivos de programa\Java\jdk1.6.0_25")

Cómo instalar JDK de Java en Windows XP

1. Bajar el SDK de Java http://java.sun.com/javase/downloads/index.jsp
2. Correr el instalador.
3. Click derecho sobre "Mi PC" -> Opciones de Entorno -> Variables de Entorno
4. Buscar la variable "Path", editar, y agregar al final la ubicación del compilador de Java, por ejemplo: ;C:\Java\jdk1.6.0_02\bin
5. Crear una variable llamada "Classpath" y poner como valor: "C:\Java\jdk1.6.0_02\src.zip\"
6. Para testear si salió todo ok abrir una consola (Inicio -> Programas -> Accesorios -> Símbolo del Sistema) y tipear "java" y luego "javac".

How to display UTF-8 chars in a JSP

1. <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
2.
3. File -> Properties -> Resource -> Text File Encoding -> UTF-8
4. If you are using resource bundle you can use this: http://englove.blogspot.com/2011/01/how-to-use-utf-8-encoding-with.htm

StripTags in Java

public class Utils {
   public static String stripTags(String text) {
        return text.replaceAll("\\<.*?\\>","").trim();
   }
}

Java Class to use Goo.gl API with Gson

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;

import com.google.gson.Gson;


public class Shortener {
    private static final String URL_GOOGL_SERVICE = "https://www.googleapis.com/urlshortener/v1/url";
   
    private static final Gson gson = new Gson();
   
    public static String shorten(String longUrl) {
        String result = new String();
        GsonGooGl gsonGooGl = new GsonGooGl(longUrl);
       
        try {
            URL url = new URL(URL_GOOGL_SERVICE);
           
            URLConnection   urlConn = url.openConnection();
            urlConn.setDoInput (true);                                                            // Let the run-time system (RTS) know that we want input.
            urlConn.setDoOutput (true);                                                            // Let the RTS know that we want to do output.
            urlConn.setUseCaches (false);                                                        // No caching, we want the real thing.
            urlConn.setRequestProperty("Content-Type", "application/json");                        // Specify the content type.
           
           
            DataOutputStream printout = new DataOutputStream (urlConn.getOutputStream ());        // Send POST output.
            String content = gson.toJson(gsonGooGl);
            printout.writeBytes (content);
            printout.flush ();
            printout.close ();
           
            DataInputStream input = new DataInputStream (urlConn.getInputStream ());            // Get response data.
           
            Scanner sc = new Scanner(input);
            while(sc.hasNext()) {
                result += sc.next();
            }
           
            GooGlResult gooGlResult = gson.fromJson(result, GooGlResult.class);
           
            return gooGlResult.getId();
        } catch (Exception ex) {
           System.out.println(ex);
           return null;
        }
    }
}

class GsonGooGl {
    public GsonGooGl(){}
    public GsonGooGl(String longUrl){
        this.longUrl = longUrl;
    }
   
    private String longUrl;

    public String getLongUrl() {
        return longUrl;
    }
    public void setLongUrl(String longUrl) {
        this.longUrl = longUrl;
    }
   
   
}

class GooGlResult {
    public GooGlResult(){}
   
    private String kind;
    private String id;
    private String longUrl;
   
    public String getKind() {
        return kind;
    }
    public void setKind(String kind) {
        this.kind = kind;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getLongUrl() {
        return longUrl;
    }
    public void setLongUrl(String longUrl) {
        this.longUrl = longUrl;
    }
   
   
}


To use:

System.out.println(Shortener.shorten("http://goorkers.com")); 

How to use UTF-8 encoding with ResourceBundle (Java)

By default ResourceBundle uses ISO-8859-1.

But you can use this excelent hack http://www.thoughtsabout.net/blog/archives/000044.html

How to get client ip in a Java Servlet

req.getRemoteAddr();
req.getRemoteHost();

How to capture GET parameters in GWT

String param = Window.Location.getParameter("param");

NumberFormat in GWT

String vat = NumberFormat.getFormat("0.00").format(country.getVAT());

I'm trying to learn english, if you find some mistakes in my redaction, please make a comment with my error

How to create a session in Java

To create a session attribute:

HttpSession sesion = req.getSession(true);
sesion.setAttribute("allowed", "YES");

To get a session parameter:

HttpSession sesion = req.getSession(true);
String allowed = (String) sesion.getAttribute("allowed");

I'm trying to learn english, if you find some mistakes in my redaction, please make a comment with my error

How to generate a random number in java

int x = ((int) Math.random() * 100);

I'm trying to learn english, if you find some mistakes in my redaction, please make a comment with my error

How to rollback an unsucesful deploy to appengine

sh /paht/to/appengine-sdk/bin/appcfg.sh rollback path/to/project/war/