Thursday, November 5, 2015

Android Fragment SQLite 2


.
Android Fragment SQLite 2
1) Startup
2) Create Database Helper
Package Name: add “.db”
File Name: DatabaseHelper.java
package com.notarazi.myviewpagertablayout1.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DataBaseHelper extends SQLiteOpenHelper {
   private static final String DATABASE_NAME "employeedb";
   private static final int DATABASE_VERSION 1;
   public static final String EMPLOYEE_TABLE "employee";
   public static final String ID_COLUMN "id";
   public static final String NAME_COLUMN "name";
   public static final String EMPLOYEE_DOB "dob";
   public static final String EMPLOYEE_SALARY "salary";
   public static final String CREATE_EMPLOYEE_TABLE "CREATE TABLE "
           EMPLOYEE_TABLE "(" ID_COLUMN " INTEGER PRIMARY KEY, "
           NAME_COLUMN " TEXT, " EMPLOYEE_SALARY " DOUBLE, "
           EMPLOYEE_DOB " DATE" ")";
   private static DataBaseHelper instance;
   public static synchronized DataBaseHelper getHelper(Context context) {
       if (instance == null)
           instance new DataBaseHelper(context);
       return instance;
   }
   private DataBaseHelper(Context context) {
       super(context, DATABASE_NAMEnullDATABASE_VERSION);
   }
   @Override
   public void onOpen(SQLiteDatabase db) {
       super.onOpen(db);
   }
   @Override
   public void onCreate(SQLiteDatabase db) {
       db.execSQL(CREATE_EMPLOYEE_TABLE);
   }
   @Override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   }
}
3) Create Database Data Access Object
Package Name: Add “.db”
File Name: EmployeeDBDAO.java
package com.notarazi.myviewpagertablayout1.db;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
public class EmployeeDBDAO {
   protected SQLiteDatabase database;
   private DataBaseHelper dbHelper;
   private Context mContext;
   public EmployeeDBDAO(Context context) {
       this.mContext = context;
       dbHelper = DataBaseHelper.getHelper(mContext);
       open();
   }
   public void open() throws SQLException {
       if(dbHelper == null)
           dbHelper = DataBaseHelper.getHelper(mContext);
       database dbHelper.getWritableDatabase();
   }
  /*public void close() {
     dbHelper.close();
     database = null;
  }*/
}
4) Create Data Model
Package Name: Add “.model”
File Name: Employee.java
package com.notarazi.myviewpagertablayout1.model;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.Date;
public class Employee implements Parcelable {
   private int id;
   private String name;
   private Date dateOfBirth;
   private double salary;
   public Employee() {
       super();
   }
   private Employee(Parcel in) {
       super();
       this.id = in.readInt();
       this.name = in.readString();
       this.dateOfBirth new Date(in.readLong());
       this.salary = in.readDouble();
   }
   public int getId() {
       return id;
   }
   public void setId(int id) {
       this.id = id;
   }
   public String getName() {
       return name;
   }
   public void setName(String name) {
       this.name = name;
   }
   public Date getDateOfBirth() {
       return dateOfBirth;
   }
   public void setDateOfBirth(Date dateOfBirth) {
       this.dateOfBirth = dateOfBirth;
   }
   public double getSalary() {
       return salary;
   }
   public void setSalary(double salary) {
       this.salary = salary;
   }
   @Override
   public String toString() {
       return "Employee [id=" id ", name=" name ", dateOfBirth="
               dateOfBirth ", salary=" salary "]";
   }
   @Override
   public int hashCode() {
       final int prime = 31;
       int result = 1;
       result = prime * result + id;
       return result;
   }
   @Override
   public boolean equals(Object obj) {
       if (this == obj)
           return true;
       if (obj == null)
           return false;
       if (getClass() != obj.getClass())
           return false;
       Employee other = (Employee) obj;
       if (id != other.id)
           return false;
       return true;
   }
   @Override
   public int describeContents() {
       return 0;
   }
   @Override
   public void writeToParcel(Parcel parcel, int flags) {
       parcel.writeInt(getId());
       parcel.writeString(getName());
       parcel.writeLong(getDateOfBirth().getTime());
       parcel.writeDouble(getSalary());
   }
   public static final Parcelable.Creator<Employee> CREATOR newParcelable.Creator<Employee>() {
       public Employee createFromParcel(Parcel in) {
           return new Employee(in);
       }
       public Employee[] newArray(int size) {
           return new Employee[size];
       }
   };
}
5) Create Data Access Object File
Package Name: Add “.db”
File Name: EmployeeDAO.java
package com.notarazi.myviewpagertablayout1.db;
import android.content.ContentValues;
import android.content.Context;
import com.notarazi.myviewpagertablayout1.model.Employee;
import java.text.SimpleDateFormat;
import java.util.Locale;
public class EmployeeDAO extends EmployeeDBDAO {
   private static final SimpleDateFormat formatter new SimpleDateFormat(
           "yyyy-MM-dd", Locale.ENGLISH);
   public EmployeeDAO(Context context) {
       super(context);
   }
   //...

   public long save(Employee employee) {
       ContentValues values = new ContentValues();
       values.put(DataBaseHelper.NAME_COLUMN, employee.getName());
       values.put(DataBaseHelper.EMPLOYEE_DOB,formatter.format(employee.getDateOfBirth()));
       values.put(DataBaseHelper.EMPLOYEE_SALARY, employee.getSalary());
       return database.insert(DataBaseHelper.EMPLOYEE_TABLEnull, values);
   }
   //....
}
6) Update Fragment Controller (Fragment 1)
File Name: Fragment1.java
package com.notarazi.myviewpagertablayout1;
import java.lang.ref.WeakReference;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.text.InputType;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Toast;
import com.notarazi.myviewpagertablayout1.R;
import com.notarazi.myviewpagertablayout1.db.EmployeeDAO;
import com.notarazi.myviewpagertablayout1.model.Employee;
public class FragmentPage1 extends Fragment implements OnClickListener {
   // UI references
   private EditText empNameEtxt;
   private EditText empSalaryEtxt;
   private EditText empDobEtxt;
   private Button addButton;
   private Button resetButton;
   private static final SimpleDateFormat formatter new SimpleDateFormat(
           "yyyy-MM-dd", Locale.ENGLISH);
   DatePickerDialog datePickerDialog;
   Calendar dateCalendar;
   Employee employee null;
   private EmployeeDAO employeeDAO;
   private AddEmpTask task;
   public static final String ARG_ITEM_ID "emp_add_fragment";
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       employeeDAO new EmployeeDAO(getActivity());
   }
   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container,
                            Bundle savedInstanceState) {
       View rootView = inflater.inflate(R.layout.fragment_page1, container,
               false);
       findViewsById(rootView);
       setListeners();
       //For orientation change.
       if (savedInstanceState != null) {
           dateCalendar = Calendar.getInstance();
           if (savedInstanceState.getLong("dateCalendar") != 0)
               dateCalendar.setTime(new Date(savedInstanceState
                       .getLong("dateCalendar")));
       }
       return rootView;
   }
   private void setListeners() {
       empDobEtxt.setOnClickListener(this);
       Calendar newCalendar = Calendar.getInstance();
       datePickerDialog new DatePickerDialog(getActivity(),
               new OnDateSetListener() {
                   public void onDateSet(DatePicker view, int year,
                                         int monthOfYear, int dayOfMonth) {
                       dateCalendar = Calendar.getInstance();
                       dateCalendar.set(year, monthOfYear, dayOfMonth);
                       empDobEtxt.setText(formatter.format(dateCalendar
                               .getTime()));
                   }
               }, newCalendar.get(Calendar.YEAR),
               newCalendar.get(Calendar.MONTH),
               newCalendar.get(Calendar.DAY_OF_MONTH));
       addButton.setOnClickListener(this);
       resetButton.setOnClickListener(this);
   }
   protected void resetAllFields() {
       empNameEtxt.setText("");
       empSalaryEtxt.setText("");
       empDobEtxt.setText("");
   }
   private void setEmployee() {
       employee new Employee();
       employee.setName(empNameEtxt.getText().toString());
       employee.setSalary(Double.parseDouble(empSalaryEtxt.getText()
               .toString()));
       if (dateCalendar != null)
           employee.setDateOfBirth(dateCalendar.getTime());
   }
   @Override
   public void onResume() {
       //getActivity().setTitle(R.string.add_emp);
       //getActivity().getActionBar().setTitle(R.string.add_emp);
       super.onResume();
   }
   @Override
   public void onSaveInstanceState(Bundle outState) {
       if (dateCalendar != null)
           outState.putLong("dateCalendar"dateCalendar.getTime().getTime());
   }
   private void findViewsById(View rootView) {
       empNameEtxt = (EditText) rootView.findViewById(R.id.etxt_name);
       empSalaryEtxt = (EditText) rootView.findViewById(R.id.etxt_salary);
       empDobEtxt = (EditText) rootView.findViewById(R.id.etxt_dob);
       empDobEtxt.setInputType(InputType.TYPE_NULL);
       addButton = (Button) rootView.findViewById(R.id.button_add);
       resetButton = (Button) rootView.findViewById(R.id.button_reset);
   }
   @Override
   public void onClick(View view) {
       if (view == empDobEtxt) {
           datePickerDialog.show();
       } else if (view == addButton) {
           setEmployee();
           task new AddEmpTask(getActivity());
           task.execute((Void) null);
       } else if (view == resetButton) {
           resetAllFields();
       }
   }
   public class AddEmpTask extends AsyncTask<Void, Void, Long> {
       private final WeakReference<Activity> activityWeakRef;
       public AddEmpTask(Activity context) {
           this.activityWeakRef new WeakReference<Activity>(context);
       }
       @Override
       protected Long doInBackground(Void... arg0) {
           long result = employeeDAO.save(employee);
           return result;
       }
       @Override
       protected void onPostExecute(Long result) {
           if (activityWeakRef.get() != null
                   && !activityWeakRef.get().isFinishing()) {
               if (result != -1)
                   Toast.makeText(activityWeakRef.get(), "Employee Saved",
                           Toast.LENGTH_LONG).show();
           }
       }
   }
}
7) Run
DOWNLOAD:
.

No comments:

Post a Comment