I’m working on project where I need to create objects from different data sources/formats. I would like to know what is the best way to organize source code to make it easy.
Let’s say I have class User and I want to have ability to create objects from data from database and JSON. The purpose of it is letting user of my app to browse data online and offline. I’m using GSON and ORMLite. In addition fields in JSON and database may be different, but the “main” fields are the same. Is it a good idea to create class which contains all properties/fields from JSON and database? Something similar to class below:
@DatabaseTable(tableName = "user", daoClass = UserDaoImpl.class)
public class User {
public static final String ID_FIELD_NAME = "id";
public static final String USER_LOGIN_FIELD_NAME = "login";
public static final String USER_EMAIL_FIELD_NAME = "email";
public static final String SERIALIZED_COUNTRY_FIELD_NAME = "user_county";
// DB & JSON
@DatabaseField(generatedId = true, columnName = ID_FIELD_NAME)
int id;
// DB & JSON
@DatabaseField(columnName = USER_LOGIN_FIELD_NAME)
String login;
//DB & JSON
@DatabaseField(columnName = USER_EMAIL_FIELD_NAME)
String email;
//Only JSON
@SerializedName(SERIALIZED_COUNTRY_FIELD_NAME)
String country;
public Track() {
}
}
I think the short answer is yes. You can certain use the same objects to represent the data in the database and via JSON.
When you will get into problems is when you need to change the data representations in the database but don’t want to change your JSON API or vice versa. Then you will need 2 separate classes and a mapping function between them.
But if you can get away with one class then that’s the best way.