O sistema funciona como um mecanismo de busca. Nesta versão o sistema está apenas na classe AttributeManager
Segue um exemplo junto ao arquivo.
manager.Manager
package manager;
public class Manager
{
public static void main(String[] args)
{
AttributeManager<Client> clients = new AttributeManager<Client>();
clients.add(new Client("Joao Carlos da Nobrega", 25, true));
clients.add(new Client("Pedro Silva Moreira", 17, true));
clients.add(new Client("Barbara Almeida", 40, false));
Client select = clients.get(Client.NAME, "Pedro Silva Moreira");
System.out.println(select.getName() + " - Idade: " + select.getAge()); //Pedro Silva Moreira - Idade: 17
select = clients.get(Client.AGE, 25);
System.out.println(select.getName() + " - Idade: " + select.getAge()); //Joao Carlos da Nobrega - Idade: 25
AttributeManager<Client> select2 = clients.getAll(Client.SEX, true);
System.out.println("Foram selecionados " + select2.size() + " clientes com sexo masculino"); //Foram selecionados 2 clientes com sexo masculino
}
}
manager.Client.java
[code]package manager;
public class Client extends AttributeManager<Object>
{
public static final int
NAME = 0,
AGE = 1,
SEX = 2; //True to male, false to female
public Client(String fname, int fage, boolean fsex)
{
setName(fname);
setAge(fage);
setSex(fsex);
}
//Name
public String getName()
{
return (String) get(NAME);
}
public final void setName(String fname)
{
set(NAME, fname);
}
//Age
public int getAge()
{
return (Integer) get(AGE);
}
public final void setAge(int fage)
{
set(AGE, fage);
}
//Sex
public boolean getSex()
{
return (Boolean) get(SEX);
}
public final void setSex(boolean fsex)
{
set(SEX, fsex);
}
}
[/code]
[color=red]manager.AttributeManager.java[/color]
[code]package manager;
import java.util.ArrayList;
public class AttributeManager<T>
{
protected ArrayList<T> attributes = new ArrayList<T>();
private void debug(String fstring)
{
System.out.println("AttributeManager: " + fstring);
}
//Size
public int size()
{
return attributes.size();
}
//Get
public T get(int ftype)
{
if(size() > ftype)
{
return attributes.get(ftype);
}
return null;
}
@SuppressWarnings("unchecked")
public T get(int ftype, Object fvalue)
{
AttributeManager<Object> fin;
for(int all = 0; all < size(); ++all)
{
fin = (AttributeManager<Object>) get(all);
if(fin != null && fin.get(ftype) != null && fin.get(ftype).equals(fvalue))
{
return (T) fin;
}
}
return null;
}
@SuppressWarnings("unchecked")
public T get(int ftype, Object fvalue, int ftype2, Object fvalue2)
{
AttributeManager<Object> fin;
for(int all = 0; all < size(); ++all)
{
fin = (AttributeManager<Object>) get(all);
if(fin != null && fin.get(ftype) != null && fin.get(ftype).equals(fvalue) && fin.get(ftype2).equals(fvalue2))
{
return (T) fin;
}
}
return null;
}
@SuppressWarnings("unchecked")
public AttributeManager<T> getAll(int ftype, Object fvalue)
{
AttributeManager<Object> fin;
AttributeManager<T> freturn = new AttributeManager<T>();
for(int all = 0; all < size(); ++all)
{
fin = (AttributeManager<Object>) get(all);
if(fin != null && fin.get(ftype) != null && fin.get(ftype).equals(fvalue))
{
freturn.add((T) fin);
}
}
return freturn;
}
@SuppressWarnings("unchecked")
public AttributeManager<T> getAll(int ftype, Object fvalue, int ftype2, Object fvalue2)
{
AttributeManager<Object> fin;
AttributeManager<T> freturn = new AttributeManager<T>();
for(int all = 0; all < size(); ++all)
{
fin = (AttributeManager<Object>) get(all);
if(fin != null && fin.get(ftype) != null && fin.get(ftype).equals(fvalue) && fin.get(ftype2).equals(fvalue2))
{
freturn.add((T) fin);
}
}
return freturn;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public T get(int ftype, int finside, Object fvalue)
{
AttributeManager ftmp;
for(int all = 0; all < size(); ++all)
{
ftmp = (AttributeManager) get(all);
if(((AttributeManager) ftmp.get(ftype)).get(finside).equals(fvalue))
{
return (T) ftmp;
}
}
return null;
}
//Extra get
public T first()
{
return get(0);
}
public T back()
{
if(size() > 0)
return attributes.remove(0);
return null;
}
public T last()
{
return get(size() - 1);
}
public T pop()
{
if(size() > 0)
{
T freturn = last();
remove(size() - 1);
return freturn;
}
return null;
}
//Set
public void add(T fvalue)
{
attributes.add(fvalue);
}
public void add(int ftype, T fvalue)
{
attributes.add(ftype, fvalue);
}
public void set(int ftype, T fvalue) //Set object value by type
{
if(size() > ftype)
{
attributes.set(ftype, fvalue);
}
else
{
for(int all = size(); all < ftype; ++all)
add(null);
add(fvalue);
}
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public void setAll(int ftype, Object fvalue)
{
for(int fall = 0; fall < size(); ++fall)
{
((AttributeManager) get(fall)).set(ftype, fvalue);
}
}
//Remove
public void remove(int ftype) //Remove object by type
{
if(size() > ftype)
{
if(ftype == size() - 1)
{
attributes.remove(ftype);
for(int all = ftype - 1; all >= 0; --all)
{
if(get(all) == null)
{
attributes.remove(all);
}
else break;
}
}
else attributes.set(ftype, null);
}
else debug("Invalid position on remove.");
}
@SuppressWarnings("rawtypes")
public void remove(int ftype, Object fvalue)
{
for(int all = 0; all < size(); ++all)
{
if(((AttributeManager) get(all)).get(ftype).equals(fvalue))
{
attributes.remove(all);
return;
}
}
debug("Unale te remove.");
}
public void remove(Object fvalue)
{
attributes.remove(fvalue);
}
public T removeFull(int ftype) //Remove without let null
{
return attributes.remove(ftype);
}
public void clean()
{
attributes.clear();
}
//Simplifications
public String concat()
{
String fresult = "";
for(int all = 0; all < attributes.size(); ++all)
{
if(fresult.length() > 0)
fresult = fresult + " ";
fresult = fresult + get(all);
}
return fresult;
}
//Extra
public ArrayList<T> array()
{
return this.attributes;
}
}[/code]
É isso, obrigado por ler e espero contribuir.
Atenciosamente, Pedro Silva Moreira - PeJuGe.