Ver mensagens sem resposta | Ver tópicos ativos Hoje é 14 Nov 2019, 02:42



Este tópico está trancado, você não pode editar mensagens ou enviar respostas.  [ 3 Mensagens ] 
 [RESOLVIDO] - Traduzir classe Genérica de Java para Kotlin 
Autor Mensagem
Android application
Android application

Data de registro: 26 Mai 2015, 19:29
Mensagens: 70
 [RESOLVIDO] - Traduzir classe Genérica de Java para Kotlin
Caríssimos bom dia.

Há uns 4 anos atrás escrevi uma classe genérica em Java para acessar o banco do Android usando ORMLite, mas agora reescrevendo o aplicativo para rodar em Kotlin não estou conseguindo traduzi-la. Já tentei de tudo, mas não sei o que fazer. Alguém consegue traduzir isso?

A minha classe DataBaseHelper aparentemente consegui converter, mas a GenericDao.kt NÃO SEI O QUE FAZER PARA CONVERTER PRA KOTLIN.

Coloquei um arquivo em anexo para mostrar os erros de sintaxe que estão aparecendo no meu Android Studio.

Agradeço a ajuda.

DatabaseHelper.java funcionando ok

package br.com.empresa;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;

import java.sql.SQLException;

import br.com.empresa.Endereco;

public class DatabaseHelper<E> extends OrmLiteSqliteOpenHelper {

    private static final String databaseName = "empresa.db";
    private static final int databaseVersion = 1;

    public DatabaseHelper(Context context) {
        super(context, databaseName, null, databaseVersion);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
        try{
            TableUtils.createTable(connectionSource, Endereco.class);            
        } catch (Exception e){
            e.printStackTrace();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int oldVersion, int newVersion) {
        try{
            TableUtils.dropTable(connectionSource, Empresa.class, true);

            onCreate(sqLiteDatabase, connectionSource);
        } catch (SQLException e){
            e.printStackTrace();
        }        
    }

    @Override
    public void close(){
        super.close();
    }
}

 


DatabaseHelper.kt convertida e funcionando ok

package br.com.empresa;

import br.com.empresa.Endereco;

import android.content.Context
import android.database.sqlite.SQLiteDatabase
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper
import com.j256.ormlite.support.ConnectionSource
import com.j256.ormlite.table.TableUtils

import java.sql.SQLException

class DataBaseHelper<E> : OrmLiteSqliteOpenHelper {

    companion object {
        private val db = "empresa.db"
        private val databaseVersion = 1
    }

    constructor(context:Context) : super(context,db,null,databaseVersion)

    override fun onCreate(sqLiteDatabase: SQLiteDatabase, connectionSource: ConnectionSource) {
        try {
            TableUtils.createTable(connectionSource, Endereco::class.java)
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

    override fun onUpgrade(
        sqLiteDatabase: SQLiteDatabase?,
        connectionSource: ConnectionSource,
        oldVersion: Int,
        newVersion: Int
    ) {
        try {
            TableUtils.dropTable<Endereco, Any>(connectionSource, Endereco::class.java, true)

            onCreate(sqLiteDatabase!!, connectionSource)
        } catch (e: SQLException) {
            e.printStackTrace()
        }
    }

    override fun close() {
        super.close()
    }
}
 


GenericDao.java funcionando ok Preciso converter essa classe para Kotlin!

package br.com.empresa;

import android.content.Context;

import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.dao.DaoManager;
import com.j256.ormlite.table.DatabaseTableConfig;
import com.j256.ormlite.table.TableUtils;

import java.util.List;

public abstract class GenericDao<E> extends DatabaseHelper<E>  {

    protected Dao<E, Integer> dao;
    private Class<E> type;

    public GenericDao(Context context, Class<E> type) {
        super(context);
        this.type = type;
        SetDao();
    }

    protected void SetDao(){
        try{
            dao = DaoManager.createDao(getConnectionSource(), type);
        } catch (Exception e){
            e.printStackTrace();
        }
    }

    public void DeleteAll() {
        try{
            dao.delete(GetAll());
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
 


GenericDao.kt Não estou conseguindo converter a classe acima em Kotlin. Desse jeito que fiz aqui não funciona.

package br.com.empresa;

import android.content.Context
import com.j256.ormlite.dao.Dao
import com.j256.ormlite.dao.DaoManager
import com.j256.ormlite.support.ConnectionSource

import br.com.empresa.DataBaseHelper

abstract class GenericDao<E, DatabaseHelper> : DatabaseHelper {

    companion object {
        protected var dao: Dao<E, Int> = null
        private var type: Class<E>? = null

    }

    constructor(context:Context, type: Class<E>) : super(context)


    init {
        type = type
        SetDao()
    }

    protected fun SetDao() {
        try {
            dao = DaoManager.createDao(getConnectionSource(), type)
        } catch (e: Exception) {
            e.printStackTrace()
        }

    }

    fun DeleteAll() {
        try {
            dao.delete(GetAll())
        } catch (e: Exception) {
            e.printStackTrace()
        }

    }
}
 


Obrigado a todos.


Você não tem permissões suficientes para ver os arquivos anexados nesta mensagem.


Editado pela última vez por darkpchan em 13 Mar 2019, 16:37, num total de 1 vezes



11 Mar 2019, 13:19
Perfil WWW
Android Guru
Android Guru
Avatar de usuário

Data de registro: 29 Ago 2011, 16:18
Mensagens: 789
Localização: Blumenau - SC
Mensagem Re: Traduzir classe Genérica de Java para Kotlin
Acho que isso aqui te ajudaria sr, vi algo parecido na net:
https://kotlinwithandroid.wordpress.com ... per-class/

_________________
Sanou a sua dúvida ou resolveu o seu problema?
1º -> Compartilhe a solução postando-a, as pessoas com a mesma dúvida ou problema agradecem.
2º -> Adicione ao título do tópico "[RESOLVIDO]" para que os moderadores identifiquem que o seu tópico foi realmente resolvido.


_____
WordPress: http://tecmaicon.wordpress.com/
github: https://github.com/maiconn
LinkedIn: http://www.linkedin.com/pub/maicon-mach ... /64/a07/20


12 Mar 2019, 18:30
Perfil WWW
Android application
Android application

Data de registro: 26 Mai 2015, 19:29
Mensagens: 70
Mensagem Re: Traduzir classe Genérica de Java para Kotlin
maiconn escreveu:
Acho que isso aqui te ajudaria sr, vi algo parecido na net:
https://kotlinwithandroid.wordpress.com ... per-class/


Meu caro muito obrigado pela atenção, mas neste exemplo ele não usa Generics, ele apenas passa uma string identificando a tabela. Sei que parece ser uma saída, mas não conseguiria utilizar os comandos comuns a todos do ORM Lite dessa forma. Métodos para trazer determinado registro por Id ou alterar um registro a partir de um mapeamento de classe não funcionariam. No Java eu instancio um objeto por reflexão e utilizo a classe GenericDao com o ORMLite passando um objeto genérico para ser utilizado nela.

Porém de ontem pra hoje vi que posso estar investindo em algo desnecessário porque apesar de o ORMLite ser muito legal, o processo de montar essa GenericDao em Kotlin tá ficando penoso e não estou sabendo traduzir meu código Java.

Me disseram para utilizar o Room e é isso o que farei, pois lá não preciso me preocupar com Generics dessa forma. Muito obrigado mais uma vez.


13 Mar 2019, 16:37
Perfil WWW
Mostrar mensagens anteriores:  Organizar por  
Este tópico está trancado, você não pode editar mensagens ou enviar respostas.   [ 3 Mensagens ] 

Quem está online

Usuários vendo este fórum: adelar, ademilson, adilson.afl, adolfo, AdrianoMM, afpcp, alberto, aluclinux, amos, Andre Brito, andrelom, Bass, bocajunior88, bravus, brunomalka, caiodemarco, Carla Luz, Carlos Almeida, Chaves, claudio, comolatti, compto, Daniel Batista, danielbfranco, Danilo Dias, dariosena, dchechetto, difrene, dobau, Dookan, edsonel, estratec, faco, felipecomp19, ffabiano, flashking, flaviojps, fmakula, furlanrapha, FVB, gabrielpg, Gnomo, gusrp, hbarroco, hellbest, Henrique Ferraz, j-menezes, jackdaniel, jcdeveloper, jhhm_2008, jlucasps, Josinhaz, jpespindola, jrsilva, Juninhooooo, juniorfranca, Juniorvs, laurj, leeeeooooooo, Lelinho, leosl81, levita, lucasB, LucasNascimento, luiz.lago, MARCIOHG, marlovich, Microdesk, Moisés Souto, monteirojp, nakahara, Nice, nilsgome, nina.rm, nrsf, oliverlessa, paulo.weber, phfmendes, phobos, pilon, polonia, Rafael Alencar, rafaelmonoh, rananfu, raninhofernandes, renata, renatocoliveira, ricdigital, robsonoracle, rocha, rodrigo_mg, Romulo, rosano, rtodao, Samantha, Samuka, sjta, Synoo [Bot], tassiovirginio, thienne, Tiago Sousa Roch, tnarnold, Transtago, Vania, Vector, viniciusgoncalves, voliverio, wcaciano, Wds, Webnet, wil, Yoda, Yoshihury e 16 visitantes


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:
cron

© 2007 - 2016 Portal Android - Comunidade de Desenvolvedores Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi