{
JClassType objectStoreTarget = getObjectStoreTarget(objectStoreMetadata);
String objectStoreName = getObjectStoreName(objectStoreMetadata, objectStoreTarget);
if (addedObjectStores.contains(objectStoreName))
{
throw new CruxGeneratorException("Duplicated objectstore declared on Datasource ["+databaseMetadata.name()+"]");
}
addedObjectStores.add(objectStoreName);
if (objectStoreMetadata.keyPath().length == 1)
{
generateObjectStoreCreation(srcWriter, objectStoreMetadata.keyPath()[0], objectStoreMetadata.autoIncrement(), objectStoreName, objectStoreVar);
}
else if (objectStoreMetadata.keyPath().length > 1)
{
generateObjectStoreCreation(srcWriter, objectStoreMetadata.keyPath(), objectStoreMetadata.autoIncrement(), objectStoreName, objectStoreVar);
}
else if (objectStoreTarget != null && !objectStoreTarget.isAssignableTo(emptyType))
{
String[] keyPath = getKeyPath(objectStoreTarget);
if (keyPath == null || keyPath.length == 0)
{
throw new CruxGeneratorException("can not create an objectStore without a key definition. ObjectStore["+objectStoreName+"].");
}
else if (keyPath.length == 1)
{
generateObjectStoreCreation(srcWriter, keyPath[0], isAutoIncrement(objectStoreTarget), objectStoreName, objectStoreVar);
}
else
{
generateObjectStoreCreation(srcWriter, keyPath, isAutoIncrement(objectStoreTarget), objectStoreName, objectStoreVar);
}
}
else
{
throw new CruxGeneratorException("can not create an objectStore without a key definition. ObjectStore["+objectStoreName+"].");
}
generateIndexesCreation(srcWriter, objectStoreMetadata.indexes(), objectStoreTarget, objectStoreVar, objectStoreName, indexNamesVar);
}
generateFileStoreCreation(srcWriter);
}