The idea is something like it:
SQL to add metadata
Code: Select all--
-- MUNICIPIO
DELETE FROM OKM_DB_METADATA_TYPE WHERE DMT_TABLE='municipio';
INSERT INTO OKM_DB_METADATA_TYPE (DMT_ID, DMT_TABLE, DMT_REAL_COLUMN, DMT_TYPE, DMT_VIRTUAL_COLUMN) VALUES (HIBERNATE_SEQUENCE.nextval, 'municipio', 'col00', 'integer', 'mun_prov_id');
INSERT INTO OKM_DB_METADATA_TYPE (DMT_ID, DMT_TABLE, DMT_REAL_COLUMN, DMT_TYPE, DMT_VIRTUAL_COLUMN) VALUES (HIBERNATE_SEQUENCE.nextval, 'municipio', 'col01', 'text', 'mun_provincia');
INSERT INTO OKM_DB_METADATA_TYPE (DMT_ID, DMT_TABLE, DMT_REAL_COLUMN, DMT_TYPE, DMT_VIRTUAL_COLUMN) VALUES (HIBERNATE_SEQUENCE.nextval, 'municipio', 'col02', 'integer', 'mun_id');
INSERT INTO OKM_DB_METADATA_TYPE (DMT_ID, DMT_TABLE, DMT_REAL_COLUMN, DMT_TYPE, DMT_VIRTUAL_COLUMN) VALUES (HIBERNATE_SEQUENCE.nextval, 'municipio', 'col03', 'text', 'mun_nombre');
INSERT INTO OKM_DB_METADATA_TYPE (DMT_ID, DMT_TABLE, DMT_REAL_COLUMN, DMT_TYPE, DMT_VIRTUAL_COLUMN) VALUES (HIBERNATE_SEQUENCE.nextval, 'municipio', 'col04', 'text', 'mun_autonomia');
GWTMunicipio class
Code: Select allpublic class
extends DatabaseMetadataCommon implements IsSerializable {
// Metadata Virtual Name mapping
public static final String MV_TABLE_NAME = "municipio";
public static final String MV_COLUMN_NAME_ID = "mun_id";
public static final String MV_COLUMN_NAME_PROVINCIA_ID = "mun_prov_id";
public static final String MV_COLUMN_NAME_NOMBRE = "mun_nombre";
public static final String MV_COLUMN_NAME_AUTONOMIA = "mun_autonomia";
private Integer id;
private Integer provinciaId;
private String nombre;
private String autonomia;
@Override
public void loadFromMap(Map<String, String> map) {
super.loadFromMap(map);
if (map.containsKey(MV_COLUMN_NAME_ID)) {
setId(DatabaseMetadataMap.getIntegerValue(map.get(MV_COLUMN_NAME_ID)));
}
if (map.containsKey(MV_COLUMN_NAME_PROVINCIA_ID)) {
setProvinciaId(DatabaseMetadataMap.getIntegerValue(map.get(MV_COLUMN_NAME_PROVINCIA_ID)));
}
if (map.containsKey(MV_COLUMN_NAME_NOMBRE)) {
setNombre(map.get(MV_COLUMN_NAME_NOMBRE));
}
if (map.containsKey(MV_COLUMN_NAME_AUTONOMIA)) {
setAutonomia(map.get(MV_COLUMN_NAME_AUTONOMIA));
}
}
@Override
public Map<String, String> restoreToMap() {
Map<String,String> map = super.restoreToMap();
return map;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getProvinciaId() {
return provinciaId;
}
public void setProvinciaId(Integer provinciaId) {
this.provinciaId = provinciaId;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getAutonomia() {
return autonomia;
}
public void setAutonomia(String autonomia) {
this.autonomia = autonomia;
}
}
then create something like:
Code: Select allGWTMunicipio municipio = new GWTMunicipio();
// fill values
municipio.setAutonomia=...;
metadataService.createValue(municipio.restoreToMap(), new AsyncCallback<Double>() {
@Override
public void onSuccess(Double result) {
// added
}
@Override
public void onFailure(Throwable caught) {
}
});
see like data data which arrives to server is a map, if you call directly the api ( not from GWT ) you should take it in consideration.
Hope this make it more clear.