package unfoldingword;
import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema;
public class MyDaoGenerator {
private static final String UW_DATABASE_MODEL_PROTOCOL = "model.UWDatabaseModel";
private static final String COMPARABLE_INTERFACE_BEGINNING = "Comparable<";
private static final String COMPARABLE_INTERFACE_END = ">";
public static void main(String[] args) throws Exception {
Schema schema = new Schema(ModelNames.DB_VERSION_ID, "model.daoModels");
schema.enableKeepSectionsByDefault();
setupData(schema);
new DaoGenerator().generateAll(schema, args[0]);
}
private static void setupData(Schema schema){
createLanguageLocale(schema);
Entity project = createProject(schema);
Entity language = createLanguage(schema, project);
Entity version = createVersion(schema, language);
Entity book = createBook(schema, version);
createBibleChapter(schema, book);
Entity storyChapter = createStoryChapter(schema, book);
createStoryPage(schema, storyChapter);
createSigningOrganization(schema);
Entity audioBook = createAudioBook(schema, book);
Entity audioChapter = createAudioChapter(schema, audioBook);
createVerification(schema, book, audioChapter);
}
private static Entity createProject(Schema schema) {
DaoHelperMethods.EntityInformation projectInfo =
new DaoHelperMethods.EntityInformation(ModelNames.PROJECT, ModelNames.PROJECT_STRING_ATTRIBUTES);
Entity project = DaoHelperMethods.createEntity(schema, projectInfo);
project.setSuperclass(UW_DATABASE_MODEL_PROTOCOL);
return project;
}
private static Entity createLanguage(Schema schema, Entity project) {
DaoHelperMethods.EntityInformation languageInfo =
new DaoHelperMethods.EntityInformation(ModelNames.LANGUAGE, ModelNames.LANGUAGE_STRING_ATTRIBUTES,
ModelNames.LANGUAGE_DATE_ATTRIBUTES);
Entity language = DaoHelperMethods.createEntity(schema, languageInfo);
language.setSuperclass(UW_DATABASE_MODEL_PROTOCOL);
DaoHelperMethods.createParentChildRelationship(
project, ModelNames.PROJECT_LANGUAGES_ATTRIBUTE,
language, ModelNames.LANGUAGE_PROJECT_ATTRIBUTE);
return language;
}
private static Entity createVersion(Schema schema, Entity language) {
DaoHelperMethods.EntityInformation versionInfo =
new DaoHelperMethods.EntityInformation(ModelNames.VERSION, ModelNames.VERSION_STRING_ATTRIBUTES,
ModelNames.VERSION_DATE_ATTRIBUTES);
Entity version = DaoHelperMethods.createEntity(schema, versionInfo);
version.setSuperclass(UW_DATABASE_MODEL_PROTOCOL);
DaoHelperMethods.createParentChildRelationship(
language, ModelNames.LANGUAGE_VERSIONS_ATTRIBUTE,
version, ModelNames.VERSION_LANGUAGE_ATTRIBUTE);
return version;
}
private static Entity createBook(Schema schema, Entity version) {
DaoHelperMethods.EntityInformation bookInfo =
new DaoHelperMethods.EntityInformation(ModelNames.BOOK, ModelNames.BOOK_STRING_ATTRIBUTES,
ModelNames.BOOK_DATE_ATTRIBUTES);
Entity book = DaoHelperMethods.createEntity(schema, bookInfo);
book.setSuperclass(UW_DATABASE_MODEL_PROTOCOL);
DaoHelperMethods.createParentChildRelationship(
version, ModelNames.VERSION_BOOKS_ATTRIBUTE,
book, ModelNames.BOOK_VERSION_ATTRIBUTE);
return book;
}
private static void createVerification(Schema schema, Entity book, Entity audioChapter) {
DaoHelperMethods.EntityInformation verificationInfo =
new DaoHelperMethods.EntityInformation(ModelNames.VERIFICATION, ModelNames.VERIFICATION_STRING_ATTRIBUTES);
verificationInfo.intAttributes = ModelNames.VERIFICATION_INT_ATTRIBUTES;
Entity verification = DaoHelperMethods.createEntity(schema, verificationInfo);
verification.setSuperclass(UW_DATABASE_MODEL_PROTOCOL);
DaoHelperMethods.createParentChildRelationship(
book, ModelNames.BOOK_VERIFICATIONS_ATTRIBUTE,
verification, ModelNames.VERIFICATION_BOOK_ATTRIBUTE);
DaoHelperMethods.createParentChildRelationship(
audioChapter, ModelNames.AUDIO_CHAPTER_VERIFICATIONS_ATTRIBUTE,
verification, ModelNames.VERIFICATION_AUDIO_CHAPTER_ATTRIBUTE);
}
private static void createBibleChapter(Schema schema, Entity book) {
DaoHelperMethods.EntityInformation bibleChapterInfo =
new DaoHelperMethods.EntityInformation(ModelNames.BIBLE_CHAPTER, ModelNames.BIBLE_CHAPTER_STRING_ATTRIBUTES);
Entity bibleChapter = DaoHelperMethods.createEntity(schema, bibleChapterInfo);
bibleChapter.setSuperclass(UW_DATABASE_MODEL_PROTOCOL);
bibleChapter.implementsInterface(getComparableInterfaceForClassName(ModelNames.BIBLE_CHAPTER));
DaoHelperMethods.createParentChildRelationship(
book, ModelNames.BOOK_BIBLE_CHAPTERS_ATTRIBUTE,
bibleChapter, ModelNames.BIBLE_CHAPTER_BOOK_ATTRIBUTE);
}
private static Entity createStoryChapter(Schema schema, Entity book) {
DaoHelperMethods.EntityInformation storyChapterInfo =
new DaoHelperMethods.EntityInformation(ModelNames.STORY_CHAPTER, ModelNames.STORY_CHAPTER_STRING_ATTRIBUTES);
Entity storyChapter = DaoHelperMethods.createEntity(schema, storyChapterInfo);
storyChapter.setSuperclass(UW_DATABASE_MODEL_PROTOCOL);
storyChapter.implementsInterface(getComparableInterfaceForClassName(ModelNames.STORY_CHAPTER));
DaoHelperMethods.createParentChildRelationship(
book, ModelNames.BOOK_STORY_CHAPTERS_ATTRIBUTE,
storyChapter, ModelNames.STORY_CHAPTER_BOOK_ATTRIBUTE);
return storyChapter;
}
private static void createStoryPage(Schema schema, Entity storyChapter) {
DaoHelperMethods.EntityInformation storyChapterPage =
new DaoHelperMethods.EntityInformation(ModelNames.STORY_PAGE, ModelNames.STORY_PAGE_STRING_ATTRIBUTES);
Entity storyPage = DaoHelperMethods.createEntity(schema, storyChapterPage);
storyPage.setSuperclass(UW_DATABASE_MODEL_PROTOCOL);
DaoHelperMethods.createParentChildRelationship(
storyChapter, ModelNames.STORY_CHAPTER_STORY_PAGES_ATTRIBUTE,
storyPage, ModelNames.STORY_PAGE_STORY_CHAPTER_ATTRIBUTE);
}
private static void createLanguageLocale(Schema schema) {
DaoHelperMethods.EntityInformation languageLocaleInfo =
new DaoHelperMethods.EntityInformation(ModelNames.LANGUAGE_LOCALE, ModelNames.LANGUAGE_LOCALE_STRING_ATTRIBUTES);
languageLocaleInfo.booleanAttributes = ModelNames.LANGUAGE_LOCALE_BOOLEAN_ATTRIBUTES;
languageLocaleInfo.intAttributes = ModelNames.LANGUAGE_LOCALE_INT_ATTRIBUTES;
Entity languageLocal = DaoHelperMethods.createEntity(schema, languageLocaleInfo);
languageLocal.setSuperclass(UW_DATABASE_MODEL_PROTOCOL);
}
private static void createSigningOrganization(Schema schema) {
DaoHelperMethods.EntityInformation verification =
new DaoHelperMethods.EntityInformation(ModelNames.SIGNING_ORGANIZATION, ModelNames.SIGNING_ORGANIZATION_STRING_ATTRIBUTES,
ModelNames.SIGNING_ORGANIZATION_DATE_ATTRIBUTES);
Entity verificationEntity = DaoHelperMethods.createEntity(schema, verification);
}
private static Entity createAudioBook(Schema schema, Entity book) {
DaoHelperMethods.EntityInformation audioBookInfo =
new DaoHelperMethods.EntityInformation(ModelNames.AUDIO_BOOK, ModelNames.AUDIO_BOOK_STRING_ATTRIBUTES);
Entity audioBook = DaoHelperMethods.createEntity(schema, audioBookInfo);
audioBook.setSuperclass(UW_DATABASE_MODEL_PROTOCOL);
DaoHelperMethods.createOneToOneRelationship(
book, ModelNames.BOOK_AUDIO_BOOK_ATTRIBUTE,
audioBook, ModelNames.AUDIO_BOOK_BOOK_ATTRIBUTE);
return audioBook;
}
private static Entity createAudioChapter(Schema schema, Entity audioBook) {
DaoHelperMethods.EntityInformation audioChapterInfo =
new DaoHelperMethods.EntityInformation(ModelNames.AUDIO_CHAPTER, ModelNames.AUDIO_CHAPTER_STRING_ATTRIBUTES);
audioChapterInfo.intAttributes = ModelNames.AUDIO_CHAPTER_INT_ATTRIBUTES;
Entity audioChapter = DaoHelperMethods.createEntity(schema, audioChapterInfo);
audioChapter.setSuperclass(UW_DATABASE_MODEL_PROTOCOL);
audioChapter.implementsInterface(getComparableInterfaceForClassName(ModelNames.AUDIO_CHAPTER));
DaoHelperMethods.createParentChildRelationship(
audioBook, ModelNames.AUDIO_BOOK_AUDIO_CHAPTER_ATTRIBUTE,
audioChapter, ModelNames.AUDIO_CHAPTER_AUDIO_BOOK_ATTRIBUTE);
return audioChapter;
}
private static String getComparableInterfaceForClassName(String className){
return COMPARABLE_INTERFACE_BEGINNING + className + COMPARABLE_INTERFACE_END;
}
}