This is my old class structure .
class User {
private int userId;
private String userName;
private String userEmail;
private String firstName;
private String lastName;
//.. getters and setters
}
And i was generating excel reports from this class exactly having same column as of property .
Class<Object> headers = (Class<Object>) excelDataMapper.getClass();
Field[] objectFields = headers.getDeclaredFields();
for (int j = 0; j < objectFields.length; j++) {
objectFields[j].setAccessible(true);
Object value = objectFields[j].get(excelDataMapper);
}
Now due to some requirement , structure of User class has changed to this
class User {
private int userId;
private String userName;
private String userEmail;
private UserBasicInfo basicInfo;
//.. getters and setters
}
And Structure of UserBasicInfo
class UserBasicInfo {
private String firstName;
private String lastName;
private Date lastLoginDate;
private int invalidLoginAttempt;
// ..getters and setters ;
}
With nested object UserBasicInfo now i have different field in excell sheets UserBasicInfo which is not required , i want to continue with reports as previous structure only , i.e firstName , lastName which is now inside UserBasicInfo . For this i want to have something like this
List<String> colHeaders= new ArrayList<String>();
Class<LoginsReport> headers = LoginsReport.class;
Field[] objectFields = headers.getDeclaredFields();
for (int j = 0; j < objectFields.length; j++) {
String fieldName = objectFields[j].getName();
if(fieldName.indexOf("encrypted") == -1 && fieldName.indexOf("Mongo") == -1 && !(ArrayUtils.contains( excluededPropertyInLoginReports, fieldName )) )
colHeaders.add(fieldName);
}
colHeaders.add("userBasicProfile.firstName");
colHeaders.add("userBasicProfile.lastName");
Aucun commentaire:
Enregistrer un commentaire