How to get a context within a class?

0

I am in a parser of a Web Service. With it, I took the data and set it on each of them (it works fine). However, at the time of inserting the same in the database it presents the following error (null):

  

Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase (java.lang.String, int, android.database.sqlite.SQLiteDatabase $ CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference

The database needs a Context, but I can not get it inside a class because it does not extend from an Activity or another type to make use of getBaseContext, getAplication and more.

* Here is the parser:

public class WSParserSetValoresBD {

    private String text;
    public BDProgramacaoGetterSetter programacaoGetterSetter;


    // numero de quantidade de table
    /*Opcoes_BaixarRotas qtd = new Opcoes_BaixarRotas();
    int quantidade = Integer.parseInt(qtd.quantidade);*/


    boolean tabela = false;
    int contadorLinhas = 0;

    private Context context;
    public WSParserSetValoresBD(Context context){
        this.context = context.getApplicationContext();
    }

    BDProgramacaoBancoDao inserir = new BDProgramacaoBancoDao(context);

    public void parse(InputStream is) {
        XmlPullParserFactory factory = null;
        XmlPullParser parser = null;

        try {
            factory = XmlPullParserFactory.newInstance();
            factory.setNamespaceAware(true);

            parser = factory.newPullParser();
            parser.setInput(is, null);

            int eventType = parser.getEventType();

            while (eventType != XmlPullParser.END_DOCUMENT ) {
                String tagname = parser.getName();
                switch (eventType) {
                    case XmlPullParser.START_TAG:
                        if(tagname.equalsIgnoreCase("Table")){
                            tabela = true;
                            programacaoGetterSetter = new BDProgramacaoGetterSetter();
                            contadorLinhas++;

                        }
                        else if (tagname.equalsIgnoreCase("DATA") || tagname.equalsIgnoreCase("ROTA") || tagname.equalsIgnoreCase("IWERK")
                                || tagname.equalsIgnoreCase("AUFNR")|| tagname.equalsIgnoreCase("VORNR")|| tagname.equalsIgnoreCase("POINT")
                                || tagname.equalsIgnoreCase("SEQUENCIA")|| tagname.equalsIgnoreCase("STATUS_PONTO")|| tagname.equalsIgnoreCase("FREQUENCIA")
                                || tagname.equalsIgnoreCase("PSORT")|| tagname.equalsIgnoreCase("PTTXT")|| tagname.equalsIgnoreCase("EQUNR")
                                || tagname.equalsIgnoreCase("EQKTX")|| tagname.equalsIgnoreCase("TPLNR")|| tagname.equalsIgnoreCase("PLTXT")
                                || tagname.equalsIgnoreCase("SIST_LUBRIFIC")|| tagname.equalsIgnoreCase("REF_LUBRIFIC")|| tagname.equalsIgnoreCase("COD_LUBRIFIC")
                                || tagname.equalsIgnoreCase("VOL_LUBRIFICCL")|| tagname.equalsIgnoreCase("QTD_CONSUMO")|| tagname.equalsIgnoreCase("DESCR_ROTA")
                                || tagname.equalsIgnoreCase("ID_PROGRAMACAO")|| tagname.equalsIgnoreCase("GRUPO")|| tagname.equalsIgnoreCase("OBSERVACAO")
                                || tagname.equalsIgnoreCase("ATIVI")|| tagname.equalsIgnoreCase("ARBPL")|| tagname.equalsIgnoreCase("ITEM_INSPEC")
                                || tagname.equalsIgnoreCase("VOL_LUBRIFCKG")|| tagname.equalsIgnoreCase("NRO_BOMBADAS")|| tagname.equalsIgnoreCase("LIMITE_INF")
                                || tagname.equalsIgnoreCase("LIMITE_SUP")|| tagname.equalsIgnoreCase("IDATE_ITIME")|| tagname.equalsIgnoreCase("VLR_MED")
                                || tagname.equalsIgnoreCase("COD_VALOR")|| tagname.equalsIgnoreCase("TEXTO_OBS")|| tagname.equalsIgnoreCase("MATRIC")
                                || tagname.equalsIgnoreCase("ATIVI")|| tagname.equalsIgnoreCase("STATUS_PROC")|| tagname.equalsIgnoreCase("MENSAGEM")
                                || tagname.equalsIgnoreCase("COL_NUMERIC")){

                        }
                        break;

                    case XmlPullParser.TEXT:

                        text = parser.getText();
                        break;

                    case XmlPullParser.END_TAG:
                        if (tagname.equalsIgnoreCase("DATA")) {
                            programacaoGetterSetter.setData(text);
                        } else if(tagname.equalsIgnoreCase("ROTA")){
                            programacaoGetterSetter.setRota(text);
                        } else if (tagname.equalsIgnoreCase("IWERK")) {
                            programacaoGetterSetter.setIwerk(text);
                        } else if (tagname.equalsIgnoreCase("AUFNR")) {
                            programacaoGetterSetter.setAufnr(text);
                        } else if (tagname.equalsIgnoreCase("VORNR")) {
                            programacaoGetterSetter.setVornr(text);
                        } else if (tagname.equalsIgnoreCase("POINT")) {
                            programacaoGetterSetter.setPoint(text);
                        } else if (tagname.equalsIgnoreCase("SEQUENCIA")) {
                            programacaoGetterSetter.setSequencia(Integer.parseInt(text));
                        } else if (tagname.equalsIgnoreCase("STATUS_PONTO")) {
                            programacaoGetterSetter.setStatus_proc(text);
                        } else if (tagname.equalsIgnoreCase("FREQUENCIA")) {
                            programacaoGetterSetter.setFrequencia(text);
                        } else if (tagname.equalsIgnoreCase("PSORT")) {
                            programacaoGetterSetter.setPsort(text);
                        } else if (tagname.equalsIgnoreCase("PTTXT")) {
                            programacaoGetterSetter.setPttxt(text);
                        } else if (tagname.equalsIgnoreCase("EQUNR")) {
                            programacaoGetterSetter.setEqunr(text);
                        } else if (tagname.equalsIgnoreCase("EQKTX")) {
                            programacaoGetterSetter.setEqktx(text);
                        } else if (tagname.equalsIgnoreCase("TPLNR")) {
                            programacaoGetterSetter.setTplnr(text);
                        } else if (tagname.equalsIgnoreCase("PLTXT")) {
                            programacaoGetterSetter.setPltxt(text);
                        } else if (tagname.equalsIgnoreCase("SIST_LUBRIFIC")) {
                            programacaoGetterSetter.setSist_lubrific(text);
                        } else if (tagname.equalsIgnoreCase("REF_LUBRIFIC")) {
                            programacaoGetterSetter.setRef_lubrific(text);
                        } else if (tagname.equalsIgnoreCase("COD_LUBRIFIC")) {
                            programacaoGetterSetter.setCod_lubrific(text);
                        } else if (tagname.equalsIgnoreCase("VOL_LUBRIFICCL")) {
                            programacaoGetterSetter.setVol_lubrificcl(Integer.parseInt(text));
                        } else if (tagname.equalsIgnoreCase("QTD_CONSUMO")) {
                            programacaoGetterSetter.setQtd_consumo(Integer.parseInt(text));
                        } else if (tagname.equalsIgnoreCase("DESCR_ROTA")) {
                            programacaoGetterSetter.setDescr_rota(text);
                        } else if (tagname.equalsIgnoreCase("ID_PROGRAMACAO")) {
                            programacaoGetterSetter.setId_programacao(Integer.parseInt(text));
                        } else if (tagname.equalsIgnoreCase("GRUPO")) {
                            programacaoGetterSetter.setGrupo(text);
                        } else if (tagname.equalsIgnoreCase("OBSERVACAO")) {
                            programacaoGetterSetter.setObservacao(text);
                        } else if (tagname.equalsIgnoreCase("ATIVI")) {
                            programacaoGetterSetter.setAtivi(text);
                        } else if (tagname.equalsIgnoreCase("ARBPL")) {
                            programacaoGetterSetter.setArbpl(text);
                        } else if (tagname.equalsIgnoreCase("ITEM_INSPEC")) {
                            programacaoGetterSetter.setItem_inspec(text);
                        } else if (tagname.equalsIgnoreCase("VOL_LUBRIFCKG")) {
                            programacaoGetterSetter.setVol_lubrifickg(Integer.parseInt(text));
                        } else if (tagname.equalsIgnoreCase("NRO_BOMBADAS")) {
                            programacaoGetterSetter.setNro_bombadas(Integer.parseInt(text));
                        } else if (tagname.equalsIgnoreCase("LIMITE_INF")) {
                            programacaoGetterSetter.setLimite_inf(Integer.parseInt(text));
                        } else if (tagname.equalsIgnoreCase("LIMITE_SUP")) {
                            programacaoGetterSetter.setlimite_sup(Integer.parseInt(text));
                        } else if (tagname.equalsIgnoreCase("IDATE_ITIME")) {
                            programacaoGetterSetter.setIdate_itime(text);
                        } else if (tagname.equalsIgnoreCase("VLR_MED")) {
                            programacaoGetterSetter.setVlr_med(Integer.parseInt(text));
                        } else if (tagname.equalsIgnoreCase("COD_VALOR")) {
                            programacaoGetterSetter.setCod_valor(text);
                        } else if (tagname.equalsIgnoreCase("TEXTO_OBS")) {
                            programacaoGetterSetter.setTexto_obs(text);
                        } else if (tagname.equalsIgnoreCase("MATRIC")) {
                            programacaoGetterSetter.setMatric(text);
                        } else if (tagname.equalsIgnoreCase("ATIVI")) {
                            programacaoGetterSetter.setAtivi(text);
                        } else if (tagname.equalsIgnoreCase("STATUS_PROC")) {
                            programacaoGetterSetter.setStatus_proc(text);
                        } else if (tagname.equalsIgnoreCase("MENSAGEM")) {
                            programacaoGetterSetter.setMensagem(text);
                        } else if (tagname.equalsIgnoreCase("COL_NUMERIC")) {
                            programacaoGetterSetter.setCol_numeric(Integer.parseInt(text));
                        } else if (tagname.equalsIgnoreCase("Table")){
                            if (programacaoGetterSetter != null)inserir.inserirDados(programacaoGetterSetter);
                        }

                        break;

                    default:
                        break;
                }
                eventType = parser.next();

            }

        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

* Here's the bank:

public class BDProgramacaoBancoDao {
    private SQLiteDatabase database_prog;

    private BDProgramacaoCustomSQLiteOpenHelper sqliteOpenHelper_prog;

    public BDProgramacaoBancoDao(Context context) {
        sqliteOpenHelper_prog = new BDProgramacaoCustomSQLiteOpenHelper(context);
    }


    public String inserirDados(BDProgramacaoGetterSetter dadosProg) {
        // inserindo valores
        ContentValues valores = new ContentValues();
        long resultado;

        database_prog = sqliteOpenHelper_prog.getWritableDatabase();

        //valores.put(sqliteOpenHelper_prog.COLUMN_ID,dadosProg.getId());  ID eh auto increment
        valores.put(sqliteOpenHelper_prog.COLUMN_ARBPL, dadosProg.getArbpl());
        valores.put(sqliteOpenHelper_prog.COLUMN_ATIVI, dadosProg.getAtivi());
        valores.put(sqliteOpenHelper_prog.COLUMN_AUFNR, dadosProg.getAufnr());
        valores.put(sqliteOpenHelper_prog.COLUMN_COD_LUBRIFIC, dadosProg.getCod_lubrific());
        valores.put(sqliteOpenHelper_prog.COLUMN_COD_VALOR, dadosProg.getCod_valor());
        valores.put(sqliteOpenHelper_prog.COLUMN_DATA, dadosProg.getData()); // no banco esta como integer
        valores.put(sqliteOpenHelper_prog.COLUMN_COL_NUMERIC, dadosProg.getCol_numeric());
        valores.put(sqliteOpenHelper_prog.COLUMN_DESCR_ROTA, dadosProg.getDescr_rota());
        valores.put(sqliteOpenHelper_prog.COLUMN_EQKTX, dadosProg.getEqktx());
        valores.put(sqliteOpenHelper_prog.COLUMN_EQUNR, dadosProg.getEqunr());
        valores.put(sqliteOpenHelper_prog.COLUMN_FREQUENCIA, dadosProg.getFrequencia());
        valores.put(sqliteOpenHelper_prog.COLUMN_GRUPO, dadosProg.getGrupo());
        valores.put(sqliteOpenHelper_prog.COLUMN_IDATE_ITIME, dadosProg.getIdate_itime());
        valores.put(sqliteOpenHelper_prog.COLUMN_ITEM_INSPEC, dadosProg.getIdate_itime());
        valores.put(sqliteOpenHelper_prog.COLUMN_IWERK, dadosProg.getIwerk());
        valores.put(sqliteOpenHelper_prog.COLUMN_LIMITE_SUP, dadosProg.getlimite_sup());
        valores.put(sqliteOpenHelper_prog.COLUMN_LIMITE_INF, dadosProg.getLimite_inf());
        valores.put(sqliteOpenHelper_prog.COLUMN_MATRIC, dadosProg.getMatric());
        valores.put(sqliteOpenHelper_prog.COLUMN_MENSAGEM, dadosProg.getMensagem());
        valores.put(sqliteOpenHelper_prog.COLUMN_NRO_BOMBADAS, dadosProg.getNro_bombadas());
        valores.put(sqliteOpenHelper_prog.COLUMN_OBSERVACAO, dadosProg.getObservacao());
        valores.put(sqliteOpenHelper_prog.COLUMN_PLTXT, dadosProg.getPltxt());
        valores.put(sqliteOpenHelper_prog.COLUMN_POINT, dadosProg.getPoint());
        valores.put(sqliteOpenHelper_prog.COLUMN_PSORT, dadosProg.getPsort());
        valores.put(sqliteOpenHelper_prog.COLUMN_PTTXT, dadosProg.getPttxt());
        valores.put(sqliteOpenHelper_prog.COLUMN_QTD_CONSUMO, dadosProg.getQtd_consumo());
        valores.put(sqliteOpenHelper_prog.COLUMN_TEXTO_OBS, dadosProg.getTexto_obs());
        valores.put(sqliteOpenHelper_prog.COLUMN_TPLNR, dadosProg.getTplnr());
        valores.put(sqliteOpenHelper_prog.COLUMN_VLR_MED, dadosProg.getVlr_med());
        valores.put(sqliteOpenHelper_prog.COLUMN_VOL_LUBRIFCCL, dadosProg.getVol_lubrificcl());
        valores.put(sqliteOpenHelper_prog.COLUMN_VOL_LUBRIFCKG, dadosProg.getVol_lubrifickg());
        valores.put(sqliteOpenHelper_prog.COLUMN_VORNR, dadosProg.getVornr());
        valores.put(sqliteOpenHelper_prog.COLUMN_REF_LUBRIFIC, dadosProg.getRef_lubrific());
        valores.put(sqliteOpenHelper_prog.COLUMN_ROTA, dadosProg.getRota());
        valores.put(sqliteOpenHelper_prog.COLUMN_SEQUENCIA, dadosProg.getSequencia());
        valores.put(sqliteOpenHelper_prog.COLUMN_SIST_LUBRIFIC, dadosProg.getSist_lubrific());
        valores.put(sqliteOpenHelper_prog.COLUMN_STATUS_PONTO, dadosProg.getStatus_ponto());
        valores.put(sqliteOpenHelper_prog.COLUMN_STATUS_PROC, dadosProg.getStatus_proc());
        valores.put(sqliteOpenHelper_prog.COLUMN_ID_PROGRAMACAO, dadosProg.getId_programacao());

        resultado = database_prog.insert(BDProgramacaoCustomSQLiteOpenHelper.TABLE_PROGRAMACAO, null, valores);
        database_prog.close();

        if (resultado ==-1) return "Erro ao inserir registro";
        else return "Registro Inserido com sucesso";
    }
}

Update * Call of the class WSParserSetValoresBD in the activity Options_AbroadRotas ("Yes" button of the AlertDialog):

   builder.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
     public void onClick(DialogInterface arg0, int arg1) {
            // nova query para o novo WS com as variaveis
            final Runnable gravandoDados = new Runnable() {
                    public void run() {

                             getTodosDados(rota, atividade, responsavel, dataSelecionada);
                             // fazer o parser com os dados recebidos

                             if (WSResultadoTodosDados != null) {                                         
                                   InputStream isTodosDados = new ByteArrayInputStream(WSResultadoTodosDados.getBytes());
                                   WSParserSetValoresBD parserTodosDados = new WSParserSetValoresBD(Opcoes_BaixarRotas.this.getApplicationContext());

                                   parserTodosDados.parse(isTodosDados);                                                                                  
                        }
                     };
            Thread queryTodosDados = new Thread(gravandoDados);
            queryTodosDados.start();
     }
    
asked by anonymous 04.01.2016 / 15:06

0 answers