package com.revolsys.gis.server.controller;
import javax.xml.namespace.QName;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import com.revolsys.ui.web.annotation.PageMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.revolsys.gis.data.io.DataObjectStore;
import com.revolsys.gis.data.io.DataObjectStoreRegistry;
import com.revolsys.gis.data.io.DataObjectStoreSchema;
import com.revolsys.io.Reader;
import com.revolsys.gis.data.model.DataObject;
import com.revolsys.gis.data.model.DataObjectMetaData;
@Controller
public class DataService {
private DataObjectStoreRegistry dataStores;
@RequestMapping("/dataStores/{dataStoreName}")
@ResponseBody
public DataObjectStore getDataStore(
@PathVariable("dataStoreName")
final String dataStoreName) {
return dataStores.getDataObjectStore(dataStoreName);
}
@RequestMapping("/dataStores/{dataStoreName}/schemas/{schemaName}")
@ResponseBody
public DataObjectStoreSchema getSchema(
@PathVariable("dataStoreName")
final String dataStoreName,
@PathVariable("schemaName")
final String schemaName) {
final DataObjectStore dataStore = dataStores.getDataObjectStore(dataStoreName);
if (dataStore == null) {
return null;
} else {
return dataStore.getSchema(schemaName);
}
}
@RequestMapping("/dataStores/{dataStoreName}/schemas/{schemaName}/types/{typePath}")
@ResponseBody
public DataObjectMetaData getType(
@PathVariable("dataStoreName")
final String dataStoreName,
@PathVariable("schemaName")
final String schemaName,
@PathVariable("typePath")
final String typePath) {
final DataObjectStore dataStore = dataStores.getDataObjectStore(dataStoreName);
if (dataStore == null) {
return null;
} else {
final DataObjectStoreSchema schema = dataStore.getSchema(schemaName);
if (schema == null) {
return null;
} else {
return schema.getMetaData(new QName(schemaName, typePath));
}
}
}
@RequestMapping("/dataStores/{dataStoreName}/schemas/{schemaName}/types/{typePath}/records")
@ResponseBody
public Reader<DataObject> getRecords(
@PathVariable("dataStoreName")
final String dataStoreName,
@PathVariable("schemaName")
final String schemaName,
@PathVariable("typePath")
final String typePath) {
final DataObjectStore dataStore = dataStores.getDataObjectStore(dataStoreName);
if (dataStore == null) {
return null;
} else {
final DataObjectStoreSchema schema = dataStore.getSchema(schemaName);
if (schema == null) {
return null;
} else {
final QName name = new QName(schemaName, typePath);
final DataObjectMetaData metaData = schema.getMetaData(name);
if (metaData == null) {
return null;
} else {
return dataStore.query(name);
}
}
}
}
public DataObjectStoreRegistry getDataStores() {
return dataStores;
}
public void setDataStores(
DataObjectStoreRegistry dataStores) {
this.dataStores = dataStores;
}
}