My application makes an order form, already creating a CSV file and playing this file in FTP , the application registers creates the CSV , but when I should upload to the ftp error (I think), it follows the code:
Class performs request:
Confirmar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String atString = atendente.getText().toString();
String mesaString = meCodigo;
String resultadoPe;
String resultadoPp = null;
resultadoPe = crud.inserePedido(data, hora, atString, mesaString);
Toast.makeText(getApplicationContext(), resultadoPe, Toast.LENGTH_LONG).show();
Cursor cursor = crud.pegaIdPedido();
pedItem = cursor.getString(cursor.getColumnIndexOrThrow(CriaBanco.getPedCodigo()));
String all = edtTotal.getText().toString();
final ArrayList<Produtos> produtos = produtosAdapter.getProdutos();
int linhas = produtos.size();
for (int i = 0; i < linhas; i++) {
Produtos linha = produtos.get(i);
String id = linha.getId();
String unitario = linha.getUnidade();
String quantidade = linha.getQtd();
resultadoPp = crud.insereProduto(id, pedItem, unitario, all, quantidade);
}
Toast.makeText(getApplicationContext(), resultadoPp, Toast.LENGTH_SHORT).show();
int linhasPe = crud.carregaPedido(Integer.parseInt(pedItem));
int linhasPp = crud.carregaProdutos(Integer.parseInt(pedItem));
crud.escrever(linhasPe, linhasPp, Integer.parseInt(pedItem));
dialog = ProgressDialog.show(RealizarPedidoActivity.this,"Aguarde...", "Sincronizando dados...",
false, true);
new Thread(new Runnable() {
@Override
public void run() {
efetuarUpload();
dialog.dismiss();
}
}).start();
AlertDialog.Builder builder = new AlertDialog.Builder(RealizarPedidoActivity.this);
builder.setTitle("Atenção");
builder.setMessage("Desaja realizar um pedido para outra mesa?");
builder.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent i = new Intent(RealizarPedidoActivity.this, ListarMesaActivity.class);
startActivity(i);
finish();
}
});
builder.setNegativeButton("Não", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent i = new Intent(RealizarPedidoActivity.this, MainActivity.class);
startActivity(i);
finish();
}
});
alerta = builder.create();
alerta.show();
}
});
}
public void efetuarUpload(){
try{
FTPController ftp = new FTPController();
ftp.conectar("192.168.2.5", "vitor", "248693751qQ", 21);
ftp.upload("export.csv", "/export/export.csv");
}catch (Exception e){
e.getStackTrace();
}
}
FTPController class:
package realsysten.com.br.sigarestaurante;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import android.os.Environment;
import android.util.Log;
/**
* Created by Vitor on 14/06/2016.
*/
public class FTPController{
FTPClient mFTP;
private String TAG = "classeFTP";
public FTPFile[] dir(String diretorio) {
try {
FTPFile[] ftpFiles = mFTP.listFiles(diretorio);
return ftpFiles;
} catch (Exception e) {
Log.e(TAG, "Erro: não foi possivel listar os arquivos e pastas do diretorio " +
diretorio + " . " + e.getMessage());
}
return null;
}
public boolean mudarDiretorio(String diretorio) {
try {
mFTP.changeWorkingDirectory(diretorio);
} catch (Exception e) {
Log.e(TAG, "Erro: não foi possivel mudar o diretorio para " + diretorio);
}
return false;
}
public boolean desconecta() {
try {
mFTP.disconnect();
mFTP = null;
return true;
} catch (Exception e) {
Log.e(TAG, "Erro: ao desconectar. " + e.getMessage());
}
return false;
}
public boolean conectar(String host, String usuario, String senha, int porta){
try {
mFTP = new FTPClient();
mFTP.connect(host, porta);
if (FTPReply.isPositiveCompletion(mFTP.getReplyCode())) {
boolean status = mFTP.login(usuario, senha);
mFTP.setFileType(FTP.BINARY_FILE_TYPE);
mFTP.enterLocalPassiveMode();
return status;
}
} catch (Exception e) {
Log.e(TAG, "ERRO: não foi possivel conectar " + host);
}
return false;
}
public boolean download(String diretorioOrigem, String arqOrigem, String arqDestino) {
boolean status = false;
try {
mudarDiretorio(diretorioOrigem);
FileOutputStream desFileStream = new FileOutputStream(arqDestino);
mFTP.setFileType(FTP.BINARY_FILE_TYPE);
mFTP.enterLocalActiveMode();
status = mFTP.retrieveFile(arqOrigem, desFileStream);
desFileStream.close();
desconecta();
return status;
} catch (Exception e) {
Log.e(TAG, "Erro: Falha ao efetuar download. " + e.getMessage());
}
return status;
}
public boolean upload(String diretorio, String nomeArquivo) {
boolean status = false;
try {
FileInputStream arqEnviar = new FileInputStream(Environment.getExternalStorageDirectory() + diretorio);
mFTP.setFileTransferMode(FTPClient.STREAM_TRANSFER_MODE);
mFTP.setFileType(FTPClient.STREAM_TRANSFER_MODE);
mFTP.storeFile(nomeArquivo, arqEnviar);
desconecta();
return status;
} catch (Exception e) {
Log.e(TAG, "Erro: falha ao efetuar upload. " + e.getMessage());
}
return status;
}
}
debugging the application, upon reaching this lines:
new Thread(new Runnable() {
@Override
public void run() {
efetuarUpload();
dialog.dismiss();
}
}).start();
Nothing happens, it only comes in new Thread(new Runnable() {
,
and jump straight to:
AlertDialog.Builder builder = new AlertDialog.Builder(RealizarPedidoActivity.this);
builder.setTitle("Atenção");
builder.setMessage("Desaja realizar um pedido para outra mesa?");
builder.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
Do not even get into the thread
Does anyone know why?
NOTE: No error appears in the Log.