If you haven't downloaded the latest Floggy release, you can find it here .
Before starting the development you must configure the Floggy in your environment.
It is really simple! All you have to do is to implement the empty interface net.sourceforge.floggy.persistence.Persistable or extend a class that implements it.
IMPORTANT : All concrete classes which implement this interface must have a public default constructor .
import net.sourceforge.floggy.persistence.Persistable;
public class Person implements Persistable {
// Static fields aren't persisted
public static int SOME_STATIC_FIELD = 1;
private String name;
private Date birthday;
private char gender;
private Phone[] phones;
// Transient fields aren't persisted
private transient int age;
// Each persistable class must have a public default constructor.
public Person() {
// Do something ...
}
...
}
...
public class Phone implements Persistable {
private String number;
private String extension;
private int type; // Mobile, Home, Work, etc
public Phone() {
// Do something ...
}
...
}
Supported types
Restrictions
All operations, such as saving, loading, deleting and finding objects are made through a single class called net.sourceforge.floggy.persistence.PersistableManager .
The basic operations are explained in the following examples:
Person p = new Person();
p.setName(...);
p.setBirthday(...);
p.setGender(...);
p.setPhones(...);
try {
// A new object ID is generated.
// You can use it in future operations.
int id = PersistableManager.getInstance().save(p);
} catch (FloggyException e) {
...
}
Person person = new Person();
try {
// To load an object, use the object ID
// generated previously by a save() operation.
PersistableManager.getInstance().load(person, id);
// Now, edit and save the object.
// The same object ID is returned.
person.setName(...);
id = PersistableManager.getInstance().save(person);
} catch (FloggyException e) {
...
}
Person person = new Person();
try {
// To load an object, use the object ID
// generated previously by a save() operation.
PersistableManager.getInstance().load(person, id);
// Delete the object.
PersistableManager.getInstance().delete(person);
} catch (FloggyException e) {
...
}
try {
// Delete all objects based on its class.
PersistableManager.getInstance().deleteAll(Person.class);
} catch (FloggyException e) {
...
}
try {
// Delete all objetcs.
PersistableManager.getInstance().deleteAll();
} catch (FloggyException e) {
...
}
Person person = new Person();
try {
// Checks if the object is persisted. This will return false
boolean persisted= PersistableManager.getInstance().isPersisted(person);
// To load an object, use the object ID
// generated previously by a save() operation.
PersistableManager.getInstance().load(person, id);
//This will return true
persisted= PersistableManager.getInstance().isPersisted(person);
} catch (FloggyException e) {
...
}
ObjectSet persons = PersistableManager.getInstance().find(Person.class, null, null);
for (int i = 0; i < persons.size(); i++) {
Person p = (Person) persons.get(i);
...
}
...
ObjectSet persons = pm.find(Person.class, new MaleFilter(), null);
for (int i = 0; i < persons.size(); i++) {
Person p = (Person) persons.get(i);
...
}
...
public class MaleFilter implements net.sourceforge.floggy.persistence.Filter {
public boolean matches(Persistable persistable) {
Person p = (Person) persistable;
return p.getGender() == 'M';
}
}
// Sorting persons by their age (younger first)
ObjectSet persons = pm.find(Person.class, null, new AgeCompator());
...
public class AgeComparator implements net.sourceforge.floggy.persistence.Comparator {
public int compare(Persistable o1, Persistable o2) {
Person p1 = (Person) o1;
Person p2 = (Person) o2;
if (p1.getBirthday().getTime() < p2.getBirthday().getTime()) {
return PRECEDES;
}
if (p1.getBirthday().getTime() > p2.getBirthday().getTime()) {
return FOLLOWS;
}
return EQUIVALENT;
}
}