27 Aralık 2017 Çarşamba

Swing AbstractTableModel Sınıfı

Giriş
Şu satırı dahil ederiz.
import javax.swing.table.AbstractTableModel;
constructor
Şöyle yaparız.
class DataModel extends AbstractTableModel{
  ArrayList<Object[]> data = new ArrayList<Object[]>();
  ArrayList<String> columnNames = new ArrayList<String>();

  public DataModel(ArrayList<String> cNames){
    super();
    columnNames = cNames;
    
  }
  ...
}
getColumnCount metodu
Şöyle yaparız.
public int getColumnCount()
{
  return columnNames.size();
};
getColumnName metodu
Şöyle yaparız.
public String getColumnName(int column)
{
  return columnNames.get(column);
}
getRowCount metodu
Şöyle yaparız.
public int getRowCount()
{
  return data.size();
};
getValueAt metodu
Şöyle yaparız.
public Object getValueAt(int rowIndex, int columnIndex){ 
  Object[] row = data.get(rowIndex);

  return row[columnIndex];
};
isCellEditable metodu
Şöyle yaparız.
public boolean isCellEditable(int rowIndex, int columnIndex)
{
  return true;
}
setValueAt metodu

Şöyle yaparızDüzenleme (Editing) işlemi bitince bu metod tetiklenir.
public void setValueAt(Object newValue, int rowIndex, int columnIndex){
  data.get(rowIndex)[columnIndex] = newValue;
  fireTableDataChanged();
}
Kendi metodumuz
Şöyle yaparız.
public void addRows (ArrayList<Object[]> rows) {
  for (int i = 0; i < rows.size(); i++) {
    Object[] clone = rows.get(i).clone();
    data.add(clone);
  }
  fireTableDataChanged();
}

25 Aralık 2017 Pazartesi

URLDecoder ve URLEncoder Sınıfları

Giriş
Bu sınıflar URL nesnesine verilecek parametreler için kullanılırlar. Açıklaması şöyle
The characters allowed in a URI are either reserved or unreserved (or a percent character as part of a percent-encoding). Reserved characters are those characters that sometimes have special meaning. For example, forward slash characters are used to separate different parts of a URL (or more generally, a URI). Unreserved characters have no such meanings. Using percent-encoding, reserved characters are represented using special character sequences.
Şu karakterler reserved oldukları için Percent Encoding'e tabidir.
! # $ & ' ( ) * + , / : ; = ? @ [ ]
Aslında Percent Encoding basitçe karakterin hexadecimal değerinin başına yüzde karakterinin eklenmesidir. Şöyle yapılır.
%26 -> &

%2B -> +

URLDecoder Sınıfı
Şu satırı dahil ederiz.
import java.net.URLDecoder;
decode metodu
Percent encoding'den string'e geri çevirir. Şöyle yaparız.
URLDecoder.decode("%25", "UTF-8")
URLEncoder Sınıfı
Şu satırı dahil ederiz.
import java.net.URLEncoDecoder;
encode metodu
Örnek
UTF-8 kullanarak şöyle yaparız. & karakteri encode edilir.
String urlParameters = "imei=1111224345&date_of_activation=2016-02-18";
String encodedParams = URLEncoder.encode(urlParameters, "UTF-8");
Örnek
ASCII kullanarak şöyle yaparız. ?, =, @, &, % karakterleri encode edilir.
String urlParameters = "?email=api.ikisan@aau.in&password=%~?7ON9Xjp;BcYu";
String encodedParams = URLEncoder.encode( urlParameters, "ASCII" )
parametreler şuna dönüşür.
"%3Femail%3Dapi.ikisan%40aau.in%26password%3D%25%7E%3F7ON9Xjp%3BBcYu";
Örnek
Şöyle yaparız. Boşluk karakteri encode edilir. Boşluk karakteri encode edilir.
URLEncoder.encode("This string has å à è ö and spaces","UTF-8")
Şuna dönüşür.
This+string+has+%C3%A5+%C3%A0+%C3%A8+%C3%B6+and+spaces


JAX-WS @SOAPBinding Anotasyonu

Örnek
Şöyle yaparız
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)

JAX-RS @MatrixParam Anotasyonu

constructor
URL içindeki key=value; şeklindeki parametrenin key ismini alır.

Örnek
Şöyle yaparız.
package com.domain.mypackage;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.GET;
import javax.ws.rs.MatrixParam;
import javax.ws.rs.Path;

// It's good practice to include a version number in the path so you can have
// multiple versions deployed at once. That way consumers don't need to upgrade
// right away if things are working for them.
@Path("calc/1.0")
public class CalculatorV1_0 {
  @GET
  @Consumes("text/plain")
  @Produces("text/plain")
  @Path("addTwoNumbers")
  public String add(@MatrixParam("firstNumber") int n1,
                    @MatrixParam("secondNumber") int n2) {
    return String.valueOf(n1 + n2);
  }
}
Çağırmak için şöyle yaparız.
http://localhost:8080/myContext/rest/calc/1.0/addTwoNumbers;firstNumber=2;secondNumber=3