Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Применение паттерна "Посетитель" к коллекции объек

Автор: Red Planet
Дата сообщения: 16.05.2013 10:31
Всех приветствую. Необходимо считать из файлов JSON информацию и вставить ее в БД. Для примера пусть это будут страны и международные организации.

Также есть JSON с континентами. Не хотелось бы мешать логику парсинга JSON и вставки в БД.
Если бы можно было вставлять по одной стране, континенту и организации, то сошел бы пример с Википедии. Вставлять необходимо все записи сразу, а не по одной, так как bulk insert работает в разы быстрее.


Код: class JsonParser {

// Names used in the JSON files
private static final String NAME = "name";
private static final String ID = "id";
private static final String ORG_IDS = "org_ids";
// File extension
private static final String DOT = ".";
private static final String JSON = "json";

private static final String SPACE = " ";
private static final String COMMA = ",";
private static final String COLON = ":";

private List<Country> mCountries;
private List<Organization> mOrgs;
private List<Continent> mContinents;

public JsonParser(Context context) {
mCountries = new ArrayList<JsonParser.Country>();
mOrgs = new ArrayList<JsonParser.Organization>();
mContinents = new ArrayList<JsonParser.Continent>();
}

private List<Country> readCountriesArray() throws IOException {
// TODO: implement it
return mCountries;
}

private List<Organization> readOrgsArray() throws IOException {
// TODO: implement it
return mOrgs;
}

/**
* Common base class for all the entities read from JSON file. The entities are {@link Country},
* {@link Organization}, and {@link Continent}
*
* @author dmitriev-ma
*
*/
abstract class BaseEntity {

private String name;
private long id;

private BaseEntity(long id, String name) {
this.id = id;
this.name = name;
}

public String getName() {
return name;
}

@Override
public String toString() {
return ID + COLON + SPACE + id + COMMA + SPACE + NAME + COLON + SPACE + name;
}
}

class Country extends BaseEntity {

private List<Long> orgsIds;

public Country(long id, String name, List<Long> orgsIds) {
super(id, name);
this.orgsIds = new ArrayList<Long>();
this.orgsIds.addAll(orgsIds);
}

public List<Long> getOrgsIds() {
return orgsIds;
}

@Override
public String toString() {
return super.toString() + COMMA + SPACE + ORG_IDS + SPACE + orgsIds;
}

}

class Organization extends BaseEntity {

private Organization(long id, String name) {
super(id, name);
}
}

class Continent extends BaseEntity {

private Continent(long id, String name) {
super(id, name);
}
}
}

Страницы: 1

Предыдущая тема: Как исправить ошибку


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.