miércoles, 27 de abril de 2016

013 ASOCIACION DE CLASES USANDO PATRON DE DISEÑO

Desde la  asociación de clases hasta el Codigo Fuente en java

Ejemplo:  
Se tiene esta Asociación de clases (Es una relacion de varios a varios, por lo que surge la clase Entrada_producto)


Su codigo fuente en java es:

public class Producto {
    private int cveproducto;
    private String nombreprod;
    public Producto(int cveproducto){
        this.cveproducto=cveproducto;
    }
    public Producto(int cveproducto,String nombreprod){
        this.cveproducto=cveproducto;
        this.nombreprod=nombreprod;
    }
    public int getCveproducto() {
        return cveproducto;
    }
    public void setCveproducto(int cveproducto) {
        this.cveproducto = cveproducto;
    }
    public String getNombreprod() {
        return nombreprod;
    }
    public void setNombreprod(String nombreprod) {
        this.nombreprod = nombreprod;
    }
}
-------------------  ooo  ---------------------------

public class Entrada_producto {
        private String folioentrada;
        private long cveproducto;
        private long cantidadentra;
        private double  precio;
        private Producto Objproducto;
        public Entrada_producto(){
        }
            public void VerificarProveedorProducto(){           
        }
    public long getCantidadentra() {
        return cantidadentra;
    }
    public void setCantidadentra(long cantidadentra) {
        this.cantidadentra = cantidadentra;
    }
    public double getPrecio() {
        return precio;
    }
    public void setPrecio(double precio) {
        this.precio = precio;
    }
    public Producto getObjproducto() {
        return Objproducto;
    }
    public void setObjproducto(Producto Objproducto) {
        this.Objproducto = Objproducto;
    }

    public String getFolioentrada() {
        return folioentrada;
    }
    public void setFolioentrada(String folioentrada) {
        this.folioentrada = folioentrada;
    }
    public long getCveproducto() {
        return cveproducto;
    }
    public void setCveproducto(long cveproducto) {
        this.cveproducto = cveproducto;
    }
}

-------------------  ooo  ---------------------------

import java.util.ArrayList;
public class Entrada {
            private  String folioentrada;
            private  String fechaentra;
            private long foliosolicitudprov;
            private ArrayList<Entrada_producto>  EntradaProd = new ArrayList<Entrada_producto>();           

    public boolean Regentrada_producto(Entrada_producto objProd){
            EntradaProd.add(objProd);
            return true;
    }
    public int getNoEntrada_productos(){
            return EntradaProd.size();
    }
    public ArrayList<Entrada_producto> getEntradaProd() {
        return EntradaProd;
    }
    public String getFolioentrada() {
        return folioentrada;
    }
    public void setFolioentrada(String folioentrada) {
        this.folioentrada = folioentrada;
    }
    public String getFechaentra() {
        return fechaentra;
    }
    public void setFechaentra(String fechaentra) {
        this.fechaentra = fechaentra;
    }    
}

Nota: Estas clases se pueden probar guardando en sus objetos

012 CONSULTAR EN SQLITE CON ANDROID STUDIO

Proyecto Android: Actividad 006
CONSULTAR LA BASE DE DATOS SQLite
Ing. Honoria Reyes Macedo

INTRODUCCION
Para visualizar los datos capturados se utilizo el componente  “ListView” que fue  llenado mediante un arreglo



1.- Agregar Consulta en el menu principal (menu_main.xml) 



Recuerda que debe de existir en el archivo strings.xml la linea:
 <string name="action_cons">Consultar</string>


2.- Crear una activity: ConsultaEntrada
 
Observar que por default va a crear:

1) Una clase   ConsultaEntrada.java    //Aquí se pondra la ejecución de los eventos  
2) Una interfaz  activity_consulta_entrada.xml    //Aqui diseñamos la interfaz(ventana)
3) Y crea un menú  content_consulta_entrada.xml    //Aquí se pondran los objetos de la ventana
 
 
3.- Capturar el siguiente codigo en content_consulta_entrada.xml   
   (En modo Text)


 <?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="uvm.seminario.bienesconsumo.ConsultaEntrada"
    tools:showIn="@layout/activity_consulta_entrada">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/c_lblConsulta"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />
    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listViewEntra"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>
 

En modo Design se vera asi




Recuerda que debe de existir en el archivo strings.xml la linea:
<string name="c_lblConsulta">Consulta General de Entradas:</string>
 

4.- Agregar el siguiente metodo a la clase EntradaDAO.java
  (Aquí se llena el arreglo que se enviara a la lista)


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, p.cveproducto, p.nombreprod,p.marca, " +
                " ep.cantidadentra, ep.precio " +
                " from  entrada e,producto p, entrada_producto ep where " +
                " ep.folioentrada = e.folioentrada and " +
                " ep.cveproducto = p.cveproducto";
        Cursor c = database.rawQuery(qry, null);
        int i = 0;
        int cantidad = c.getCount();
        int ncolumns=c.getColumnCount();
        arregloEnviar = new String[cantidad];
        if (c.moveToFirst()) {
            do {
                String 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;
}
 
 
 
5.-  en ConsultaEntrada.java Agregar el codigo en rojo


Agregar tambien el metodo:
 
 
public void cargarEntradas() {
  entradaBD = new EntradaDAO(this);
  try {
   String[] AllDatos = entradaBD.consultar();
   ArrayAdapter<String> adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1, AllDatos);
   ListView Lista = (ListView) findViewById(R.id.listViewEntra);
   Lista.setAdapter(adapter);
   Toast.makeText(this, "Cargando datos", Toast.LENGTH_LONG).show();
 }catch (Exception e){
    Toast.makeText(this, "Error de Consulta: " + e, Toast.LENGTH_LONG).show();
 }
}
 
 
 
6.-  Agregar a MainActivity.java la opcion para consultar
        ( En el metodo onOptionsItemSelected )



 
COMPILAR Y EJECUTAR   (La opcion de consulta esta en el menu)



martes, 19 de abril de 2016

011 INSERTAR EN SQLITE CON ANDROID STUDIO

Proyecto Android: Actividad 005
ACCESAR A LA BASE DE DATOS SQLite
Ing. Honoria Reyes Macedo

INTRODUCCION
Accesar a la base de datos SQLite usando el patron de diseño DAO y DTO
DAO    - Utiliza una clase que es la que interactúa con la base de datos.
            - Los métodos de esta clase dependen de la aplicación y de lo que queramos hacer.               Pero generalmente se implementan los métodos CRUD (Create, Read, Update,                  Delete).
            - DAO UTILIZA EL Patron de diseño  Data Transfer Object (DTO) anteriormente                     conocido como Value Object(VO) para transportar los datos desde la base de                      datos hacia la capa de lógica de negocio y Viceversa.
           - DTO o VO: Contiene atributos privados con sus respectivos get y set para accesar                a ellos.

                     Nota: Renombrar tus clases Producto, Entrada, Entrada_producto 
                              para agregar VO al final( refactorizar):
                              Ejemplo:







ACTIVIDADES:

1.-  Agregar la clase Dbhelper.java




2.- Crear la clase  EntradaDAO.java






3.- Agregar a la clase   RegEntrada.java en el metodo onClick()







  Nota    En entradaVO.java   debe existir los metodos

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

  public String getCampos() {
    this.campos = "folioentrada Text , " +
            "status Integer, " +
            "fechaentra datetime";
    return campos;
  }

 En ProductoVO.java   debe existir los metodos

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

  public String getCampos() {
    this.campos = "cveproducto  Integer , " +
            "nombreprod Text, " +
            "marca Text, " +
            "serie Text, " +
            "status Integer, " +
            "stock Integer, " +
            "caducidad Text, " +
            "tipoproducto Integer, " +
            "fechaalta datetime";
    return campos;
  }

 En Entrada_productoVO.java   debe existir los metodos  

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

  public String getCampos() {
    this.campos ="folioentrada Text, " +
            "cveproducto Integer, " +
            "cantidadentra Integer, " +
            "precio Integer";
    return campos;
  }


REVISAR EN LA CLASE RegEntrada QUE EXISTA EL CODIGO QUE ESTA EN ROJO: 







Compilar y Ejecutar





ACTIVIDAD COMPLEMENTARIA:  Hacer una consulta de lo que se va insertando

1.-