Coder Social home page Coder Social logo

trabalhoconstrucaosw's Introduction

Trabalho de Construcao de Software

Resumo

Framework que disponibiliza as operações básicas de um CRUD em cima de um banco de dados relacional (MySQL, Oracle), através de uma classe abstrata onde são implementados tais operações e uma UI onde é possivel realizar tais operações.

Configuração do banco de dados

O usuário já deve estar com o banco relacional escolhido rodando na máquina em questão. Então deve-se implementar uma classe que estenda a classe "SqlConnection" e implemente o método "CreateConnection", como foi feito na classe "MySqlConnection" da aplicação de exemplo.

```
@Override
public Connection createConnection() {

	try {
		conn = DriverManager.getConnection(URL, USUARIO, SENHA);
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	// Retorna a conexao aberta
	return conn;
}

```

Isso visa disponibilizar à classe "SqlConnection" o atributo "conn" que servirá para realizar as operações com o banco de dados. Obs: É importante verificar a porta em que o seu banco de dados está usando e colocar a mesma no código. Por exemplo, no MySql a default é 3306.

Como as tabelas são representadas

O Framework conta com uma classe chamada "TableObject" que serve para representar um mapeamento entra a tabela no banco de dados com o código em si. Toda tabela do banco, em que o usuário queria realizar operações sobre ela, deve ter uma classe estendida de "TableObject" para representar a mesma. A classe "TableObject" exige que toda tabela tenha um campo ID, isso garante que o framework trabalhe com um objeto uníco e não tenha repetições.

As colunas do banco são representadas por atributos, e as chaves primárias e extrangerias da tabela devem ser adicionados aos arrays "primaryKey" e "foreignKey", respectivamente, no construtor além disso o array "relations" serve para declarar relações N para N. Conforme é realizado na classe "Carro" da aplicação de exemplo:

```
	public Carro(String marca,String modelo,Double motor, int concessionariaId)
{
	super();
	
	this.marca = marca;
	this.modelo = modelo;
	this.motor = motor;
	this.concessionariaId = concessionariaId;
	
	primaryKey.add("id");
	setforeignKey("concessionariaId","Concessionaria","id");
	relations.add(new CarroConcessionaria(id, 0, 0));
}

```

No array "primaryKey" deve ser adicionado o atributo no qual é uma chave primária no banco de dados. Já para o array "foreignKey", deve-se utilizar o método "setforeignKey" para facilitar a inserção do mesmo. Deve ser passado o atributo na classe que é uma chave estrangeira, a outra classe na qual ele aponta e por fim o atributo na outra classe. Desse módo é feito a ligação entre a coluna da sua tabela e a coluna da outra tabela.

Além disso, toda classes que representam tabelas devem implementar os seguintes métodos:

* setProperties(Map<String, Object> dict)
* Map<String, Object> convertToDict()

Toda a comunicação entre as operações com o banco de dados, UI e os objetos de mapeamento é realizado através de dicionários para facilitar a manipulação de objetos. Assim o "setProperties" é responsável por transformar atributos de um dicionário para a classe em si e o "convertToDict" realiza o contrário, transformando a classe em si para dentro de um dicionário.

ATENÇÃO: a realização das operações com sucesso depende da boa implementação desses dois métodos. Veja o seguinte exemplo:

  @Override
  public void setProperties(Map<String, Object> dict) {
  	setId(Integer.parseInt(dict.get("id").toString()));
  	marca = dict.get("marca").toString();
  	motor =  (Double.parseDouble(dict.get("motor").toString()));
  	concessionariaId = Integer.parseInt(dict.get("concessionariaId").toString());
  	modelo = dict.get("modelo").toString();
  }

  @Override
  public Map<String, Object> convertToDict() {
  	Map<String, Object> obj = new LinkedHashMap<String, Object>();
  	obj.put("id", id);
  	obj.put("marca", marca);
  	obj.put("modelo", modelo);
  	obj.put("motor", motor);
  	obj.put("concessionariaId", concessionariaId);
  	return obj;
  }
  

Main

O usuário do framework podera se basear na classe "Main" da aplicação de exemplo para visualizar como instanciar a aplicação. Deve ficar claro que o usuário devera criar objetos como exemplo das classes em que ele quiser manipular e inserir as mesmas em um array que sera passado para a classe "CrudFramework", conforme aplicação de exemplo disponível.

UI

A UI conta com um form que disponibiliza as 4 operações do CRUD, em cada uma é possivel realizar a sua respectiva função. A primeira coisa a ser feita é atraves do combobox escolher em qual tabela sera feita as operações.

O unico detalhe é a parte do "Create" onde se o objeto em questão tiver um relacionamento após a tentativa de inclusão do mesmo sera apresentado um novo form de inclusão para adicionar os campos referentes a tabela de relacionamento.

Na parte do "Update" o usuário tera que primeiro inserir o "ID" do objeto, dar um "GET" para trazer as informações do mesmo na tela e após isso realizar as alterações que ele desejar nos campos apresentados.

O "GET" traz o objeto a partir do ID inserido e o "delete" remove o objeto a partir do ID também.

trabalhoconstrucaosw's People

Contributors

brunoreisc avatar gabrielsilveiraa avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.