Tecnologia do Blogger.
RSS

[androidbrasil-dev] Re: Exportar dados sqlite para txt/xml

package dataplus.application.engine;

import java.io.File;
import java.io.FileInputStream;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

import dataplus.application.connection.WsConnection;
import android.app.Activity;
import android.os.Environment;
import android.widget.Toast;

public class ExportarDados extends Activity {

WsConnection connection = new WsConnection();
String wResultConsulta;

public void exportarDados(){

try
{

exportarCliente();

exportarPedidos();

exportarPedidoItens();

} catch (Exception e) {

e.printStackTrace();
}
}

private void exportarCliente(){

try
{
connection.set_METHOD_NAME("SetCliente");

SoapObject request = new SoapObject(connection.get_NAMESPACE(), connection.get_METHOD_NAME());

File xmlFile = new File(Environment.getDataDirectory() + "/data/dataplus.application/cliente.xml");
FileInputStream is = new FileInputStream(xmlFile);
XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
parser.setInput(is, null);
int eventType = parser.getEventType();

String tag = "";

while(eventType != XmlPullParser.END_DOCUMENT) {

if(eventType==XmlPullParser.START_TAG){
tag=parser.getName();
if (tag.equals("Empresa"))
{
eventType = parser.next();
request.addProperty("empresa", parser.getText());
}
else if (tag.equals("Codigo"))
{
eventType = parser.next();
request.addProperty("codigo", parser.getText());
}
else if (tag.equals("Nome"))
{
eventType = parser.next();
request.addProperty("nome", parser.getText());
}
else if (tag.equals("Endereco"))
{
eventType = parser.next();
request.addProperty("endereco", parser.getText());
}
else if (tag.equals("Bairro"))
{
eventType = parser.next();
request.addProperty("bairro", parser.getText());
}
else if (tag.equals("Cidade"))
{
eventType = parser.next();
request.addProperty("cidade", parser.getText());
}
else if (tag.equals("Estado"))
{
eventType = parser.next();
request.addProperty("uf", parser.getText());
}
else if (tag.equals("CEP"))
{
eventType = parser.next();
request.addProperty("cep", parser.getText());
}
else if (tag.equals("FisJur"))
{
eventType = parser.next();
request.addProperty("fisjur", parser.getText());
}
else if (tag.equals("CNPJ"))
{
eventType = parser.next();
request.addProperty("cnpj", parser.getText());
}
else if (tag.equals("CPF"))
{
eventType = parser.next();
request.addProperty("cpf", parser.getText());
}
else if (tag.equals("InscEst"))
{
eventType = parser.next();
request.addProperty("inscEst", parser.getText());
}
else if (tag.equals("RG"))
{
eventType = parser.next();
request.addProperty("rg", parser.getText());
}
else if (tag.equals("Telefone"))
{
eventType = parser.next();
request.addProperty("telefone", parser.getText());
}
else if (tag.equals("Email"))
{
eventType = parser.next();
request.addProperty("email", parser.getText());
}
}

eventType = parser.next();
}

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.dotNet=true;
envelope.setOutputSoapObject(request);

HttpTransportSE androidHttpTransport = new HttpTransportSE(connection.get_URL());

androidHttpTransport.debug = true;

androidHttpTransport.call(connection.get_NAMESPACE() + "" + connection.get_METHOD_NAME(), envelope);

SoapPrimitive result = (SoapPrimitive) envelope.getResponse();

wResultConsulta = result.toString();

if(wResultConsulta.equals("true")){

xmlFile.delete();

}

} catch (Exception e) {

Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}

}

private void exportarPedidos(){

try
{
connection.set_METHOD_NAME("SetPedido");

SoapObject request = new SoapObject(connection.get_NAMESPACE(), connection.get_METHOD_NAME());

File xmlFile = new File(Environment.getDataDirectory() + "/data/dataplus.application/pedido.xml");
FileInputStream is = new FileInputStream(xmlFile);
XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
parser.setInput(is, null);
int eventType = parser.getEventType();

String tag = "";

while(eventType != XmlPullParser.END_DOCUMENT) {

if(eventType==XmlPullParser.START_TAG){
tag=parser.getName();
if (tag.equals("Empresa"))
{
eventType = parser.next();
request.addProperty("empresa", parser.getText());
}
else if (tag.equals("Pedido"))
{
eventType = parser.next();
request.addProperty("pedido", parser.getText());
}
else if (tag.equals("Cliente"))
{
eventType = parser.next();
request.addProperty("cliente", parser.getText());
}
else if (tag.equals("DataPedido"))
{
eventType = parser.next();
request.addProperty("datapedido", parser.getText());
}
else if (tag.equals("TotalPedido"))
{
eventType = parser.next();
request.addProperty("totalpedido", parser.getText());
}
}

eventType = parser.next();
}

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.dotNet=true;
envelope.setOutputSoapObject(request);

HttpTransportSE androidHttpTransport = new HttpTransportSE(connection.get_URL());

androidHttpTransport.debug = true;

androidHttpTransport.call(connection.get_NAMESPACE() + "" + connection.get_METHOD_NAME(), envelope);

SoapPrimitive result = (SoapPrimitive) envelope.getResponse();

wResultConsulta = result.toString();

if(wResultConsulta.equals("true")){

xmlFile.delete();

}

} catch (Exception e) {

Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}

}

private void exportarPedidoItens(){

try{

connection.set_METHOD_NAME("SetPedidoItens");

SoapObject request = new SoapObject(connection.get_NAMESPACE(), connection.get_METHOD_NAME());

File xmlFile = new File(Environment.getDataDirectory() + "/data/dataplus.application/pedidoitens.xml");
FileInputStream is = new FileInputStream(xmlFile);
XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
parser.setInput(is, null);
int eventType = parser.getEventType();

String tag = "";

while(eventType != XmlPullParser.END_DOCUMENT) {

if(eventType==XmlPullParser.START_TAG){
tag=parser.getName();
if (tag.equals("Empresa"))
{
eventType = parser.next();
request.addProperty("empresa", parser.getText());
}
else if (tag.equals("PedidoRef"))
{
eventType = parser.next();
request.addProperty("pedido", parser.getText());
}
else if (tag.equals("Item"))
{
eventType = parser.next();
request.addProperty("item", parser.getText());
}
else if (tag.equals("Produto"))
{
eventType = parser.next();
request.addProperty("produto", parser.getText());
}
else if (tag.equals("Quantidade"))
{
eventType = parser.next();
request.addProperty("qtde", parser.getText());
}
else if (tag.equals("ValorUnitario"))
{
eventType = parser.next();
request.addProperty("valorUnit", parser.getText());
}
}

eventType = parser.next();
}

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.dotNet=true;
envelope.setOutputSoapObject(request);

HttpTransportSE androidHttpTransport = new HttpTransportSE(connection.get_URL());

androidHttpTransport.debug = true;

androidHttpTransport.call(connection.get_NAMESPACE() + "" + connection.get_METHOD_NAME(), envelope);

SoapPrimitive result = (SoapPrimitive) envelope.getResponse();

wResultConsulta = result.toString();

if(wResultConsulta.equals("true")){

xmlFile.delete();

}

}catch (Exception e){

Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG).show();

}

}

}
package dataplus.application.engine;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlSerializer;

import android.app.Activity;
import android.os.Environment;
import android.util.Log;
import android.util.Xml;

import dataplus.application.connection.WsConnection;

public class ImportarDados extends Activity {

WsConnection connection = new WsConnection();

public void importarDados(){

try
{
importarCliente();

importarProduto();

criarArquivos();

} catch (Exception e) {

e.printStackTrace();
}
}

private void importarCliente(){

try
{

connection.set_METHOD_NAME("GetClientes");

SoapObject request = new SoapObject(connection.get_NAMESPACE(), connection.get_METHOD_NAME());

request.addProperty("empresa", 1);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);

HttpTransportSE androidHttpTransport = new HttpTransportSE(connection.get_URL());

androidHttpTransport.call(connection.get_NAMESPACE() + "" + connection.get_METHOD_NAME(), envelope);

SoapObject listaDataSet = (SoapObject) envelope.getResponse();
int propertyGetRetornoWebCount = listaDataSet.getPropertyCount();

if (propertyGetRetornoWebCount > 0) {

SoapObject objResultSoapObject = new SoapObject(connection.get_NAMESPACE(),connection.get_METHOD_NAME());
SoapObject objSoapObject = new SoapObject(connection.get_NAMESPACE(),connection.get_METHOD_NAME());

objResultSoapObject = (SoapObject) listaDataSet.getProperty(1);
objSoapObject = (SoapObject) objResultSoapObject.getProperty(0);
int propertyResultCount = objSoapObject.getPropertyCount();

File newxmlfile = new File(Environment.getDataDirectory() + "/data/dataplus.application/cliente.xml");

try{
newxmlfile.createNewFile();
}
catch(IOException e){
Log.e("IOException", "Exception in create new File(");
}

FileOutputStream fileos = null;

try{
fileos = new FileOutputStream(newxmlfile);
}
catch(FileNotFoundException e){
Log.e("FileNotFoundException",e.toString());
}

if (propertyResultCount > 0){

XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(fileos, "UTF-8");
serializer.startDocument(null, Boolean.valueOf(true));
serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
serializer.startTag(null, "clientes");

for (int currentProperty = 0; currentProperty < propertyResultCount; currentProperty++) {

SoapObject obj = (SoapObject) objSoapObject.getProperty(currentProperty);
int attributeResultCount = obj.getPropertyCount();

serializer.startTag(null, "cliente");

for (int index = 0; index < attributeResultCount; index++){

PropertyInfo pi = new PropertyInfo();
obj.getPropertyInfo(index, pi);

String tag = pi.name;
String value = obj.getPropertyAsString(index).toString();

serializer.startTag(null, tag);
serializer.text(value);
serializer.endTag(null, tag);

}

serializer.endTag(null,"cliente");
}
serializer.endTag(null,"clientes");
serializer.endDocument();
serializer.flush();
fileos.close();
}
}

} catch (Exception e) {
e.printStackTrace();
}
}

private void importarProduto(){

try{

connection.set_METHOD_NAME("GetProdutos");

SoapObject request = new SoapObject(connection.get_NAMESPACE(), connection.get_METHOD_NAME());

request.addProperty("empresa", 1);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.dotNet=true;
envelope.setOutputSoapObject(request);

HttpTransportSE androidHttpTransport = new HttpTransportSE(connection.get_URL());

androidHttpTransport.call(connection.get_NAMESPACE() + "" + connection.get_METHOD_NAME(), envelope);

SoapObject listaDataSet = (SoapObject) envelope.getResponse();
int propertyGetRetornoWebCount = listaDataSet.getPropertyCount();

if (propertyGetRetornoWebCount > 0) {

SoapObject objResultSoapObject = new SoapObject(connection.get_NAMESPACE(),connection.get_METHOD_NAME());
SoapObject objSoapObject = new SoapObject(connection.get_NAMESPACE(),connection.get_METHOD_NAME());

objResultSoapObject = (SoapObject) listaDataSet.getProperty(1);
objSoapObject = (SoapObject) objResultSoapObject.getProperty(0);
int propertyResultCount = objSoapObject.getPropertyCount();

File newxmlfile = new File(Environment.getDataDirectory() + "/data/dataplus.application/produto.xml");

try{
newxmlfile.createNewFile();
}
catch(IOException e){
Log.e("IOException", "Exception in create new File(");
}

FileOutputStream fileos = null;

try{
fileos = new FileOutputStream(newxmlfile);
}
catch(FileNotFoundException e){
Log.e("FileNotFoundException",e.toString());
}

if (propertyResultCount > 0){

XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(fileos, "UTF-8");
serializer.startDocument(null, Boolean.valueOf(true));
serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
serializer.startTag(null, "produtos");

for (int currentProperty = 0; currentProperty < propertyResultCount; currentProperty++) {

SoapObject obj = (SoapObject) objSoapObject.getProperty(currentProperty);
int attributeResultCount = obj.getPropertyCount();

serializer.startTag(null, "produto");

for (int index = 0; index < attributeResultCount; index++){

PropertyInfo pi = new PropertyInfo();
obj.getPropertyInfo(index, pi);

String tag = pi.name;
String value = obj.getPropertyAsString(index).toString();

serializer.startTag(null, tag);
serializer.text(value);
serializer.endTag(null, tag);
}

serializer.endTag(null,"produto");
}
serializer.endTag(null,"produtos");
serializer.endDocument();
serializer.flush();
fileos.close();
}
}

} catch (Exception e) {

e.printStackTrace();
}
}

private void criarArquivos(){

File xmlPedido = new File(Environment.getDataDirectory() + "/data/dataplus.application/pedido.xml");
File xmlPedidoItens = new File(Environment.getDataDirectory() + "/data/dataplus.application/pedidoitens.xml");
FileOutputStream fileos = null;

try{
if(!xmlPedido.exists()){

xmlPedido.createNewFile();
fileos = new FileOutputStream(xmlPedido);

XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(fileos, "UTF-8");
serializer.startDocument(null, Boolean.valueOf(true));
serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
serializer.startTag(null, "pedidos");
serializer.endTag(null,"pedidos");
serializer.endDocument();
serializer.flush();
fileos.close();
}

if(!xmlPedidoItens.exists()){

xmlPedidoItens.createNewFile();
fileos = new FileOutputStream(xmlPedidoItens);

XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(fileos, "UTF-8");
serializer.startDocument(null, Boolean.valueOf(true));
serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
serializer.startTag(null, "pedidoitem");
serializer.endTag(null,"pedidoitem");
serializer.endDocument();
serializer.flush();
fileos.close();
}
}
catch(IOException e){
Log.e("IOException", "Exception in create new File(");
}
}
}Rudrigo, bom dia.


Então cara, rs... eu terei de fazer isso ainda hoje acredito.

Mas já fiz alguns testes referentes a isso, mas não utilizando o SQLite, acredito que o que muda, é que você terá que fazer as consultas no banco e montar o XML.

No caso dos meus testes eu tinha 2 botões Importar e Exportar. O Importar se comunicava com um Webservice .NET, passava alguns parâmetros e baixava todos os dados vindo do webservice dentro do aparelho eu recebia esses dados e montava Xml's para depois trabalhar com esses dados.
Após trabalhar com esses dados, se eu quisesse exportar eu fazia o inverso, eu lia os xml's que eu já havia montado e também trabalhei com alteração de xml para montar como se fosse um banco de dados xml dentro do aparelho e funcionou normalmente. Ai na exportação eu lia esses xml's e passava pro webservice, esse webservice recebia as informações e gravava em um banco de dados SQLServer.

Estou passando as classes de Exportação e Importação que montei. Acho que pode te ajudar.
Também tenho os métodos onde altero o xml e lido com ele como um banco de dados, inserindo informações, editando e excluindo.

On Tuesday, December 4, 2012 11:39:45 AM UTC-2, Rudrigo Lima wrote:
Caros amigo,

   Alguem já passou por isso, exportar dados de um banco sqlite rodando no aparelho e tenha que extrair para um arquivo txt ou xml, se tiver uma dica ficarei no aguardo

--
Rudrigo Lima.
Graduando em Sistema de Informação
 
*55 81 8507-4125
Skype: rudrigojclima
Twitter: @rudrigolima
Blog: rudrigolima.wordpress.com


--
 
 

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário