Tutorial sobre criação de regras de negócio para Android Igor Rafael Santos da Silva
Este tutorial dará atenção à criação de regras de negócio em um ambiente de desenvolvimento Android. Primeiramente, vamos definir o que seria uma regra de negócio. Nossa aplicação destina-se à locação de imóveis, ou seja, um usuário poderá usar nosso serviço para procurar um imóvel disponível para aluguel ou poderá disponibilizar um imóvel em sua posse para aluguel. Então, espera-se que um usuário faça login no serviço para que ele possa disponibilizar seus imóveis para aluguel, ou, para que ele possa procurar imóveis com base em sua localização, salvar imóveis favoritos, conversar com o proprietário do imóvel, dentre outras opções. O login do nosso serviço pode ser considerado como um requisito funcional do nosso serviço, ou seja, é algo que o nosso serviço deve fazer para tratar uma necessidade dos usuários. Mas esse login deve ser especificado, deve ser definido como ele irá ocorrer, se irá utilizar-se de redes sociais para ser efetuado. As regras que irão definir como o login ocorrerá são as regras de negócio. Elas definirão como o nosso sistema atenderá a ação de login do usuário. Regras de negócio podem ser compreendidas quanto a como um requisito funcional se realizará. Neste tutorial será dado um exemplo com o login via conta de acesso (usuário e senha) da nossa aplicação, com as regras de negócio sendo criadas para Android. Os dados de login ficarão armazenados no banco de dados (SQLite). Nosso exemplo conterá a criação de um novo login, atualização de informações de login, e exclusão de login. Nosso projeto usa o padrão de arquitetura MVC (Model-View-Controller), então nossas regras de negócios ficaram no model. Para auxiliar na explicação da criação da regra, a classe Login que será usada no código será mostrada abaixo. 1. Classe Login public class Login //private int _id; String _username; String _email String _password; // construtor public Login() // construtor public Login(int id, String username, String _email, String _password)
this._id = id; this._username = username; this._password = _password; // construtor public Login(String username, String password) this._username = username; this. password = password; public Login(int id) this._id = id; public int getid() return this._id; public void setid(int id) this._id = id; public String getusername() return this._username; public void setusername(string username) this._username = username; public String getpassword() return this. password;
public void setpassword(string _password) this. password = _password; public String getemail() return this. email; public void setemail(string _email) this. email = _email; A classe Login possui os atributos username, password, email e id. O id será usado para identificação (Chave Primária) no banco de dados. Abaixo é mostrado o código de implementação do model de login via conta de acesso. Os métodos oncreate e onupdate são usados pelo Android para criação e atualização do banco de dados, respectivamente. A classe Login é usada para criar a estrutura das tabelas de login no banco (não será abordado nesse tutorial). A classe ContentValues é usada para armazenar os valores de login e inseri-los no banco. 2. Criação de um model para gestão dos dados de login via conta de acesso import android.content.contentvalues; import android.content.context; import android.database.cursor; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper; import android.util.log; final class loginuser private static final String DB_NAME = "user_login_db"; private static final String TABLE_NAME = "login "; private static final int DB_VERSION = 1; private static final String DB_CREATE_QUERY = "CREATE TABLE " +
loginuser.table_name + "(id integer primary key autoincrement, titulo text not null);"; private final SQLiteDatabase database; private final SQLiteOpenHelper helper; public loginuser(final Context ctx) this.helper = new SQLiteOpenHelper(ctx, loginuser.db_name, null, loginuser.db_version) @Override public void oncreate(final SQLiteDatabase db) db.execsql(loginuser.db_create_query); @Override public void onupgrade(final SQLiteDatabase db, final int oldversion, final int newversion) db.execsql("drop TABLE IF EXISTS " + loginuser.table_name); this.oncreate(db); ; this.database = this.helper.getwritabledatabase(); public void adduserlogin(login login) SQLiteDatabase db = this.getwritabledatabase(); ContentValues values = new ContentValues(); values.put(key_username, login.getusername()); values.put(key_email, login.getemail());
values.put(key_password, login.getpassword()); db.insert(table_name, null, values); db.close(); // Closing database connection public Login getlogin(int id) SQLiteDatabase db = this.getreadabledatabase(); Cursor cursor = db.query(table_name, new String[] KEY_ID, KEY_USERNAME, KEY_EMAIL, KEY_PASSWORD, KEY_ID + "=?", new String[] String.valueOf(id), null, null, null, null); if (cursor!= null) cursor.movetofirst(); Login login = newlogin(integer.parseint(cursor.getstring(0)), cursor.getstring(1), cursor.getstring(2), cursor.getstring(3)); return login; public int updatelogin(login login) SQLiteDatabase db = this.getwritabledatabase(); ContentValues values = new ContentValues(); values.put(key_name, login.getusername()); values.put(key_email, login.getemail()); return db.update(table_name, values, KEY_ID + " =?", new String[] String.valueOf(login.getID()) ); public int updatepassword(login login) SQLiteDatabase db = this.getwritabledatabase(); ContentValues values = new ContentValues(); values.put(key_password, login.getpassword());
return db.update(table_name, values, KEY_ID + " =?", new String[] String.valueOf(login.getID()) ); public void deletelogin(login login) SQLiteDatabase db = this.getwritabledatabase(); db.delete(table_name, KEY_ID + " =?", new String[] String.valueOf(login.getID()) ); db.close(); O model criado implementa métodos para tratar ações relacionadas ao login, como adicionar novo usuário, atualizar informações de login e excluir login. Esses métodos executam as ações determinadas e retornam os dados solicitados pela camada que os chamou (controller). A classe controller, com os métodos de criar novo usuário e atualizar login, será mostrada abaixo apenas para completude do exemplo. 3. Criação do controller para o serviço de login via conta de acesso import android.content.contentvalues; import android.content.context; import android.database.cursor; public class logincontroller private loginuser model; private List<String> tarefas; public logincontroller(context app_context) model = new loginuser(app_context); public void adduser(final String username, final String email, final String password) Login login = new Login(username, email, password);
model.adduser(data); public void update Login(int id) Login login = new Login(id); model.updatelogin(login);