package orz.sorz.lab.smallcloudemoji.daogenerator;
import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Property;
import de.greenrobot.daogenerator.Schema;
import de.greenrobot.daogenerator.ToMany;
public class AppDaoGenerator {
public static void main(String[] args) throws Exception {
Schema schema = new Schema(2, "org.sorz.lab.smallcloudemoji.db");
addEntities(schema);
addSources(schema);
new DaoGenerator().generateAll(schema, "app/src-gen");
}
private static void addEntities(Schema schema) {
Entity repository = schema.addEntity("Repository");
repository.addIdProperty().index();
repository.addStringProperty("url").notNull().unique().index();
repository.addStringProperty("alias");
repository.addBooleanProperty("hidden").index();
repository.addIntProperty("order");
repository.addDateProperty("lastUpdateDate");
Entity category = schema.addEntity("Category");
category.addIdProperty().index();
category.addStringProperty("name");
category.addBooleanProperty("hidden").index();
category.addDateProperty("lastUpdateDate").index();
Property repositoryId = category.addLongProperty("repositoryId").index().getProperty();
category.addToOne(repository, repositoryId);
ToMany repositoryToCategories = repository.addToMany(category, repositoryId);
repositoryToCategories.setName("categories");
Entity entry = schema.addEntity("Entry");
entry.addIdProperty().index();
entry.addStringProperty("emoticon").notNull();
entry.addStringProperty("description");
entry.addBooleanProperty("star").index();
Property lastUsed = entry.addDateProperty("lastUsed").indexDesc(null, false).getProperty();
entry.addDateProperty("lastUpdateDate").index();
Property categoryId = entry.addLongProperty("categoryId").index().getProperty();
entry.addToOne(category, categoryId);
ToMany categoryToEntries = category.addToMany(entry, categoryId);
categoryToEntries.setName("entries");
categoryToEntries.orderDesc(lastUsed);
}
private static void addSources(Schema schema) {
Entity source = schema.addEntity("Source");
source.addIdProperty().index();
source.addStringProperty("name").notNull();
source.addStringProperty("iconUrl");
source.addDateProperty("postDate");
source.addStringProperty("introduction");
source.addStringProperty("creator");
source.addStringProperty("creatorUrl");
source.addStringProperty("server");
source.addStringProperty("serverUrl");
source.addStringProperty("dataFormat");
source.addStringProperty("installUrl").notNull();
source.addStringProperty("codeUrl").index().notNull();
source.addStringProperty("storeUrl");
source.addBooleanProperty("installed").index();
}
}