domingo, 14 de agosto de 2016

007 Android studio y SQLite. Entrada Docs 2

Practica007: Android (SQLITE: Registrar Entrada de Documento ) PARTE 2
Ing. Honoria Reyes Macedo




1.-Agregar las siguientes lineas al archivo strings.xml
<string name="action_EntraDoc">Captura Entrada de Documento</string>


2.- Crear la clase RegEntradaVo.java

package com.scodoc.uvm.gestiondocumentos;

/**
 * Created by 8Honoriarm on 29/08/2016.
 */
public class RegEntradaVo {
   
private int folioentrada;
   
private int cvedocumento;
   
private String nooficio;
   
private String asunto;
   
private String acuerdo;
   
private String resolucion;
   
private String fechadescarga;
   
private boolean urgente;
   
private String campos;
   
private String tabla;

   
public RegEntradaVo(){

    }

   
public String getCampos() {
       
this.campos= "folioentrada Integer primary key, " +
               
"cvedocumento Integer, " +
               
"nooficio Text, " +
               
"asunto Text, " +
               
"acuerdo Text, " +
               
"resolucion Text, " +
               
"fechadescarga Text, " +
               
"urgente Integer ";
       
return campos;
    }

   
public String getTabla() {
       
this.tabla="entrada";
       
return tabla;
    }

   
public int getFolioentrada() {
       
return folioentrada;
    }

   
public void setFolioentrada(int folioentrada) {
       
this.folioentrada = folioentrada;
    }

   
public int getCvedocumento() {
       
return cvedocumento;
    }

   
public void setCvedocumento(int cvedocumento) {
       
this.cvedocumento = cvedocumento;
    }

   
public String getNooficio() {
       
return nooficio;
    }

   
public void setNooficio(String nooficio) {
       
this.nooficio = nooficio;
    }

   
public String getAsunto() {
       
return asunto;
    }

   
public void setAsunto(String asunto) {
       
this.asunto = asunto;
    }

   
public String getAcuerdo() {
       
return acuerdo;
    }

   
public void setAcuerdo(String acuerdo) {
       
this.acuerdo = acuerdo;
    }

   
public String getResolucion() {
       
return resolucion;
    }

   
public void setResolucion(String resolucion) {
       
this.resolucion = resolucion;
    }

   
public String getFechadescarga() {
       
return fechadescarga;
    }

   
public void setFechadescarga(String fechadescarga) {
       
this.fechadescarga = fechadescarga;
    }

   
public boolean isUrgente() {
       
return urgente;
    }

   
public void setUrgente(boolean urgente) {
       
this.urgente = urgente;
    }
}

4.- Crear la clase RegEntradaDAO.java
 


package com.scodoc.uvm.gestiondocumentos;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import java.sql.SQLException;

/**
 * Created by 8Honoriarm on 29/08/2016.
 */
public class RegEntradaDAO {
   
private Context ourcontext;
   
private SQLiteDatabase database;
   
private DBhelper dbhelper;

   
public RegEntradaVo campohelp = new RegEntradaVo();
   
private  final String CREATE_TABLE = "create table if not exists "
           
+ campohelp.getTabla() + "(" + campohelp.getCampos() + " );";

   
public RegEntradaDAO(Context c){
       
ourcontext= c;
    }

   
public RegEntradaDAO abrirBD()throws SQLException {
       
dbhelper= new DBhelper(ourcontext);
       
database = dbhelper.getWritableDatabase();
       
database.execSQL(CREATE_TABLE);
       
return this;
    }

   
public void cerrarBD(){
       
dbhelper.close();
    }

   
public long insertarEntrada(RegEntradaVo regEntra)throws SQLException{
       
int sts=0;
        ContentValues registro =
new ContentValues();
       
long  result=1;

        registro.put(
"folioentrada", regEntra.getFolioentrada());
        registro.put(
"cvedocumento", regEntra.getCvedocumento());

        registro.put(
"nooficio", regEntra.getNooficio());
        registro.put(
"asunto", regEntra.getAsunto());
        registro.put(
"acuerdo", regEntra.getAcuerdo());
        registro.put(
"resolucion", regEntra.getResolucion());
        registro.put(
"fechadescarga", regEntra.getFechadescarga());
       
if(regEntra.isUrgente()) {
            sts=
1;
        }
        registro.put(
"urgente", sts);
        result =
database.insert(regEntra.getTabla(),null,registro);
        Log.d(
"El valor de result=", String.valueOf(result));
       
return result;
    }

}

5.- Agregar lo que esta en rojo a  la clase RegEntradaFragment.java:
 



package com.scodoc.uvm.gestiondocumentos;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;

import java.util.ArrayList;
import java.util.Iterator;


public class RegEntradaFragment extends Fragment {
    View
viewReg;
   
private Spinner spindocsTipos;
   
private EditText folio,numDoc,asunto,acuerdo,resoluc,fechadesc;
   
private CheckBox urge;
   
private Button btn_Guardar;
    RegEntradaDAO datosRegEntraBD;
    DocumentoDAO
datosBD;
    RegEntradaVo RegEntrada_Datos;
    ArrayList<TipoDocVo>
AllDatos;

   
public RegEntradaFragment() {
       
// Required empty public constructor
   
}

   
@Override
   
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
       
viewReg= inflater.inflate(R.layout.fragment_reg_entrada, container, false);

        folio = (EditText) viewReg.findViewById(R.id.IdtextVFolio);
       
numDoc = (EditText) viewReg.findViewById(R.id.editTNumDoc);
        spindocsTipos = (Spinner) viewReg.findViewById(R.id.spinnDoc);
        asunto = (EditText) viewReg.findViewById(R.id.edtTAsunto);
        acuerdo = (EditText) viewReg.findViewById(R.id.edtTAcuerdo);
        resoluc = (EditText) viewReg.findViewById(R.id.edtTResol);
        fechadesc = (EditText) viewReg.findViewById(R.id.edtTFechaDesc);
        urge =(CheckBox) viewReg.findViewById(R.id.checkBUrge);
        btn_Guardar=(Button) viewReg.findViewById(R.id.Idbtn_guardar);
        cargarTipoDocs();


        RegEntrada_Datos= new RegEntradaVo();
        datosRegEntraBD= new RegEntradaDAO(viewReg.getContext());




        btn_Guardar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    preparaDatos();

                    datosRegEntraBD.abrirBD();

                    Log.d("MyApp", "Abrio la base......................... ");
                    datosRegEntraBD.insertarEntrada(RegEntrada_Datos);
                    Log.d("MyApp", "Inserto en la base......................... ");
                } catch (Exception e) {
                    Log.d("MyApp", "Error:......................... " + e.getMessage());
                }
            }
        });

       
return viewReg;
    }

   
public void cargarTipoDocs() {
       
datosBD = new DocumentoDAO(viewReg.getContext());
        ArrayAdapter<TipoDocVo> adapter;
       
try {
           
AllDatos = datosBD.ArrayListTipoDoc();
            adapter =
new ArrayAdapter<TipoDocVo>(viewReg.getContext(),
                    android.R.layout.
simple_spinner_item, AllDatos);   // Se llena con un ArrayList
           
spindocsTipos.setAdapter(adapter);
            Log.d(
"MyApp", "Lleno el spinner...................... ");

        }
catch (Exception e){
            Log.d(
"MyApp", "Error...................... " + e);
        }
    }
    public void preparaDatos(){
        //String probando=spindocsTipos.getSelectedItem().toString();  // Descripcion del tipo seleccionado

        int posTipoDoc=spindocsTipos.getSelectedItemPosition();    //Posicion para buscar en el arreglo
       
TipoDocVo ObjTipoDoc =AllDatos.get(posTipoDoc);   //Busca el objeto  en el arreglo
       
int cveDoc=ObjTipoDoc.getCveDocumento();
        //NumDoc.setText(probando + String.valueOf(cveDoc));   //probando
        RegEntrada_Datos.setFolioentrada(Integer.valueOf(folio.getText().toString()));
        RegEntrada_Datos.setCvedocumento(cveDoc);
        RegEntrada_Datos.setNooficio(numDoc.getText().toString());
        RegEntrada_Datos.setAsunto(asunto.getText().toString());
        RegEntrada_Datos.setAcuerdo(acuerdo.getText().toString());
        RegEntrada_Datos.setResolucion(resoluc.getText().toString());
        RegEntrada_Datos.setFechadescarga(fechadesc.getText().toString());
        RegEntrada_Datos.setUrgente(urge.isChecked());
        Log.d("MyApp", "Preparo los datos........................ " + urge.isChecked() );
    }


}
 
 



6)     Agregar una consulta de entradas: Crear una nueva 
activity: ConsultaEntraDoc 

1.-Agregar las siguientes lineas al archivo strings.xml

<
string name="action_consultaEntraDoc">Consulta Entradas</string>

2.-Agregar las siguientes lineas al archivo menu_inicio_activity.xml
<item android:id="@+id/action_consEntra"
   
android:title="@string/action_consultaEntraDoc"
   
android:orderInCategory="103" app:showAsAction="never" />
}
        
Se generan los archivos:

         ConsultaEntraDoc.java
         activity_consulta_entra_doc.xml
         content_consulta_entra_doc.xml


6.1) El archivo activity_consulta_entra_doc.xml quedaria asi:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:app="http://schemas.android.com/apk/res-auto"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
    
android:layout_height="match_parent"
   
android:fitsSystemWindows="true"
   
tools:context="com.scodoc.uvm.gestiondocumentos.ConsultaEntraDoc">

    <
android.support.design.widget.AppBarLayout
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:theme="@style/AppTheme.AppBarOverlay">

        <
android.support.v7.widget.Toolbar
           
android:id="@+id/toolbar"
           
android:layout_width="match_parent"
           
android:layout_height="?attr/actionBarSize"
           
android:background="?attr/colorPrimary"
           
app:popupTheme="@style/AppTheme.PopupOverlay" />

    </
android.support.design.widget.AppBarLayout>

    <
include layout="@layout/content_consulta_entra_doc" />

    <
android.support.design.widget.FloatingActionButton
       
android:id="@+id/fab"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:layout_gravity="bottom|end"
       
android:layout_margin="@dimen/fab_margin"
        
android:src="@android:drawable/ic_dialog_email" />

</
android.support.design.widget.CoordinatorLayout>
 


6.2)  El archivo content_consulta_entra_doc.xml quedaria asi:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:app="http://schemas.android.com/apk/res-auto"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:paddingBottom="@dimen/activity_vertical_margin"
   
android:paddingLeft="@dimen/activity_horizontal_margin"
   
android:paddingRight="@dimen/activity_horizontal_margin"
   
android:paddingTop="@dimen/activity_vertical_margin"
   
app:layout_behavior="@string/appbar_scrolling_view_behavior"
   
tools:context="com.scodoc.uvm.gestiondocumentos.ConsultaEntraDoc"
   
tools:showIn="@layout/activity_consulta_entra_doc">

    <
ListView
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
        
android:id="@+id/listVEntraDoc"
       
android:layout_gravity="center_horizontal" />
</
RelativeLayout>


 


6.3  Agregar el metodo consultar() al archivo RegEntradaDAO.java

public String[] consultar()throws SQLException {
   
dbhelper= new DBhelper(ourcontext);
   
database = dbhelper.getReadableDatabase();
    String arregloEnviar[]=
new String[0];
   
if (database != null) {

        String qry=
"select e.folioentrada,d.descripcion,e.nooficio,e.asunto,e.acuerdo," +
               
" e.resolucion,e.fechadescarga,e.urgente " +
               
" from  documento d, entrada e " +
               
" where d.cvedocumento=e.cvedocumento ";
        Cursor c =
database.rawQuery(qry, null);
       
int i = 0;
       
int cantidad = c.getCount();
       
int ncolumns=c.getColumnCount();
        String Linea=
"";

        arregloEnviar =
new String[cantidad];
       
if (c.moveToFirst()) {
            Log.d(
"MyApp", "Si encontro Datos...................... ");
           
do {
                Linea =
"* ";
               
for(int j=0; j<ncolumns; j++){

                   
int tipo =c.getType(j);
                   
switch (tipo){
                       
case 3: Linea =Linea + c.getString(j) + " "; break;
                        
case 1: Linea =Linea + c.getInt(j) + " ";  break;
                       
case 2: Linea =Linea + c.getFloat(j) + " "; break;
                       
case 4: Linea =Linea + c.getBlob(j) + " "; break;
                       
case 0: Log.d("00:",c.getColumnName(j)); break;
                       
default: Linea =Linea + c.getString(j) + " "; break;
                    }
                }
                arregloEnviar[i] = Linea;
                i++;
            }
while (c.moveToNext());
        }
    }
   
return arregloEnviar;
}




6.4 Agregar el codigo al archivo ConsultaEntraDoc.java


package com.scodoc.uvm.gestiondocumentos;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class ConsultaEntraDoc extends AppCompatActivity {
    RegEntradaVo
EntraDoc_Datos;
    RegEntradaDAO
datosBD;


   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_consulta_entra_doc);
        Toolbar toolbar = (Toolbar) findViewById(R.id.
toolbar);
        setSupportActionBar(toolbar);
        cargarEntradaDocs();

    }

   
public void cargarEntradaDocs() {
       
datosBD = new RegEntradaDAO(this);
       
EntraDoc_Datos = new RegEntradaVo();
       
/**alumnBD.abrirBD();*/
       
try {

            String[] AllDatos =
datosBD.consultar();
            ArrayAdapter<String> adapter=
new ArrayAdapter(this,android.R.layout.simple_list_item_1, AllDatos);
            ListView Lista = (ListView) findViewById(R.id.
listVEntraDoc);
            Lista.setAdapter(adapter);

            Toast.makeText(
this, "LLeno el arreglo", Toast.LENGTH_LONG).show();
        }
catch (Exception e){
            Toast.makeText(
this, "Error de Consulta: " + e, Toast.LENGTH_LONG).show();
        }
    }

}


 



6.5 Agregar lo que esta en rojo en el metodo onOptionsItemSelected() del archivo InicioActivity.java:

public boolean onOptionsItemSelected(MenuItem item) {
    Fragment fragment =
null;
   
int id = item.getItemId();
   
switch (id) {
       
case R.id.action_InsTipoDoc:
            fragment =
new TipoDocFragment();

            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.
content_frame, fragment)
                    .commit();
           
break;
       
case R.id.action_consTipoDoc:
            Toast.makeText(
this, "Espere...", Toast.LENGTH_LONG).show();
            Intent ir =
new Intent(this, ConsultaTipoDoc.class);
            startActivity(ir);
           
break;
       
case R.id.action_capturaEntrada:
            fragment =
new RegEntradaFragment();

            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.
content_frame, fragment)
                    .commit();
           
break;
        case R.id.action_consEntra:
            Toast.makeText(this, "Espere...", Toast.LENGTH_LONG).show();
            Intent irEntra = new Intent(this, ConsultaEntraDoc.class);
            startActivity(irEntra);
            break;

       
default:
           
return super.onOptionsItemSelected(item);

    }
   
return true;
}




*************************
IdtextVFolio
spinnDoc
editTNumDoc
edtTAsunto
edtTAcuerdo
edtTResol
edtTFechaDesc
checkBUrge
Idbtn_guardar


               Usar los siguientes componentes:            

               Un <TextView>  con el id: textVUsuario
               Un <TextView>  con el id: textVPassw  ; con inputType="textPassword"
               Un <EditText>  con el id: editTUsuario     
               Un <EditText>  con el id: editTPasw        
               Un <Button>  con el id: btnAceptar
 





No hay comentarios.:

Publicar un comentario