package net.autosauler.ballance.client.model;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import net.autosauler.ballance.client.Services;
import net.autosauler.ballance.client.gui.AlertDialog;
import net.autosauler.ballance.client.gui.MainPanel;
import com.extjs.gxt.ui.client.data.BaseModelData;
import com.extjs.gxt.ui.client.store.ListStore;
import com.google.gwt.user.client.rpc.AsyncCallback;
public class CatalogModel extends BaseModelData {
private static final long serialVersionUID = -8157421165515276943L;
public static void load(final ListStore<CatalogModel> store,
final String catalogname) {
final List<CatalogModel> records = new ArrayList<CatalogModel>();
MainPanel.setCommInfo(true);
// Log.error(catalogname);
Services.catalogs.getAllRecords(catalogname,
new AsyncCallback<Set<Long>>() {
/*
* (non-Javadoc)
*
* @see
* com.google.gwt.user.client.rpc.AsyncCallback#onFailure
* (java.lang .Throwable)
*/
@Override
public void onFailure(Throwable caught) {
MainPanel.setCommInfo(false);
new AlertDialog(caught).show();
}
@Override
public void onSuccess(Set<Long> result) {
MainPanel.setCommInfo(false);
Iterator<Long> i = result.iterator();
while (i.hasNext()) {
Long number = i.next();
records.add(new CatalogModel(number, catalogname,
store));
}
store.add(records);
}
});
}
public CatalogModel(Long number, String catalogname,
final ListStore<CatalogModel> store) {
MainPanel.setCommInfo(true);
Services.catalogs.getRecord(catalogname, number,
new AsyncCallback<HashMap<String, Object>>() {
@Override
public void onFailure(Throwable caught) {
MainPanel.setCommInfo(false);
new AlertDialog(caught).show();
}
@Override
public void onSuccess(final HashMap<String, Object> result) {
MainPanel.setCommInfo(false);
if (result == null) {
new AlertDialog("Server exchange error").show();
} else {
Set<String> keys = result.keySet();
for (String key : keys) {
set(key, result.get(key));
}
store.update(CatalogModel.this);
}
}
});
}
}