diff --git a/schematic-compiler/src/main/java/net/simonvt/schematic/compiler/ContentProviderWriter.java b/schematic-compiler/src/main/java/net/simonvt/schematic/compiler/ContentProviderWriter.java index 9811d0a..b5b9261 100644 --- a/schematic-compiler/src/main/java/net/simonvt/schematic/compiler/ContentProviderWriter.java +++ b/schematic-compiler/src/main/java/net/simonvt/schematic/compiler/ContentProviderWriter.java @@ -123,7 +123,7 @@ static enum Type { String providerName; Element database; - String databaseName; + ClassName databaseClass; ExecutableElement defaultNotifyInsert; ExecutableElement defaultNotifyBulkInsert; @@ -172,11 +172,22 @@ public ContentProviderWriter(ProcessingEnvironment processingEnv, Elements eleme TypeMirror mirror = e.getTypeMirror(); this.database = processingEnv.getTypeUtils().asElement(mirror); String databaseSchematicName = this.database.getSimpleName().toString(); + String databaseSchematicPackage = this.database.getEnclosingElement().getSimpleName().toString(); Database database = this.database.getAnnotation(Database.class); - databaseName = database.className(); - if (databaseName.trim().isEmpty()) { - this.databaseName = databaseSchematicName; + String databaseName = database.className(); + String databasePackage = database.packageName(); + + String resultingPackage = databaseSchematicPackage; + String resultingName = databaseSchematicName; + + if (!databasePackage.trim().isEmpty()) { + resultingPackage = databasePackage; } + if (!databaseName.trim().isEmpty()) { + resultingName = databaseName; + } + + databaseClass = ClassName.get(resultingPackage, resultingName); } List enclosedElements = provider.getEnclosedElements(); @@ -519,7 +530,7 @@ private MethodSpec getOnCreateSpec() { .returns(boolean.class) .addModifiers(Modifier.PUBLIC) .addAnnotation(Override.class) - .addStatement("database = $L.getInstance(getContext())", databaseName) + .addStatement("database = $T.getInstance(getContext())", databaseClass) .addStatement("return true") .build(); }