我有各种CSV文件,它们代表需要添加到Cloud FireStore的不同类。我使用CSV例程库将CSV记录从特定的CSV文件转换为特定类的对象,然后将每个对象添加到特定的Cloud FireStore集合
此代码有效
try {
InputStreamReader is = new InputStreamReader(getAssets()
.open("fullvar3.csv"));
CsvRoutines routines = new CsvRoutines();
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
for (Variety v : routines.iterate(Variety.class, is)) {
firestore.collection("/static/test/DFLKJDF39494/varieties").add(v);
}
} catch(IOException ex){
System.out.println("Exception");
ex.printStackTrace();
}
有很多csv文件-每个文件代表一个不同的类。 Cloud FireStore中也有不同的相应集合,必须向其中添加内容。
我想创建一个可以用每个CSV文件/类/云Firestore元组的参数调用的方法。传递csv文件名和Cloud Firestore Collection路径很容易,但是我在类上遇到了麻烦。它在for-each循环中发挥了两次作用-一次作为一个对象,一次作为'.class'事物。这是我到目前为止(尚未编译)的内容。
public void addToCloudStore(String filename, String path, Class cl){
try {
InputStreamReader is = new InputStreamReader(getAssets()
.open(filename));
CsvRoutines routines = new CsvRoutines();
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
Object obj = new Object();
cl.cast(obj);
for (obj : routines.iterate(cl, is)) {
firestore.collection(path).add(obj);
}
} catch(IOException ex){
System.out.println("Exception");
ex.printStackTrace();
}
}
该如何修改才能起作用?
答案 0 :(得分:0)
感谢David Conrad的提示
这是一个可行的解决方案
public void addToCloudStore(String filename, String path, Class<?> cl){
try {
InputStreamReader is = new InputStreamReader(getAssets()
.open(filename));
CsvRoutines routines = new CsvRoutines();
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
for (Object obj : routines.iterate(cl, is)) {
firestore.collection(path).add(obj);
}
} catch(IOException ex){
System.out.println("Exception");
ex.printStackTrace();
}
}