use of com.baremaps.model.Collection in project baremaps by baremaps.
the class CollectionsResourceIntegrationTest method test.
@Test
public void test() {
// Create a new collection
Collection collection = new Collection().title("test").links(List.of(new Link().href("/link").rel("self")));
// List the collections
Collections collections = target().path("/collections").request().get(Collections.class);
assertEquals(0, collections.getCollections().size());
// Insert the collection
Response response = target().path("/collections").request(MediaType.APPLICATION_JSON).post(Entity.entity(collection, MediaType.valueOf("application/json")));
assertEquals(201, response.getStatus());
// List the collections
collections = target().path("/collections").request().get(Collections.class);
assertEquals(1, collections.getCollections().size());
// Get the collection
String id = response.getHeaderString("Location").split("/")[4];
collection = target().path("/collections/" + id).request().get(Collection.class);
assertEquals("test", collection.getTitle());
// Update the collection
collection.setTitle("test_update");
response = target().path("/collections/" + id).request().put(Entity.entity(collection, MediaType.valueOf("application/json")));
assertEquals(204, response.getStatus());
// Delete the collection
response = target().path("/collections/" + id).request().delete();
assertEquals(204, response.getStatus());
// List the collections
collections = target().path("/collections").request().get(Collections.class);
assertEquals(0, collections.getCollections().size());
}
use of com.baremaps.model.Collection in project baremaps by baremaps.
the class ImportResource method uploadData.
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("studio/import")
public Response uploadData(@FormDataParam("file") InputStream fileInputStream, @FormDataParam("file") FormDataContentDisposition fileMetaData) throws Exception {
// Read FeatureCollection
FeatureJSON fjson = new FeatureJSON();
var fc = fjson.readFeatureCollection(fileInputStream);
// Setup Collection
String fileName = fileMetaData.getFileName();
Collection collection = new Collection().id(UUID.randomUUID()).title(fileName.substring(0, fileName.lastIndexOf(".") - 1)).extent(new Extent().spatial(new ExtentSpatial().bbox(List.of(List.of(fc.getBounds().getMinX(), fc.getBounds().getMinY(), fc.getBounds().getMaxX(), fc.getBounds().getMaxY()))))).count(fc.size()).created(new Date()).geometryType(fc.getSchema().getGeometryDescriptor().getType().getBinding().getSimpleName());
// Load data
jdbi.useTransaction(handle -> {
// Create collection
handle.createUpdate("insert into collections (id, collection) values (:id, CAST(:collection AS jsonb))").bind("id", collection.getId()).bindByType("collection", collection, COLLECTION).execute();
// Create table
handle.execute(String.format("create table \"%s\" (id serial, tags hstore, geom geometry)", collection.getId()));
// Insert features
var features = fc.features();
while (features.hasNext()) {
SimpleFeature feature = (SimpleFeature) features.next();
HashMap<String, String> properties = new HashMap<>();
feature.getProperties().stream().filter(property -> !property.getName().getLocalPart().equals("geometry")).forEach(property -> properties.put(property.getName().getLocalPart(), property.getValue().toString()));
Object geom = feature.getDefaultGeometryProperty().getValue();
handle.createUpdate(String.format("insert into \"%s\" (tags, geom) values (:tags, ST_Transform(ST_SetSRID(CAST(:geom as geometry), 4326), 3857))", collection.getId())).bind("tags", properties).bind("geom", geom.toString()).execute();
}
});
return Response.created(URI.create("collections/" + collection.getId())).build();
}
use of com.baremaps.model.Collection in project baremaps by baremaps.
the class CollectionsResource method getCollection.
@Override
public Response getCollection(UUID collectionId) {
Collection collection = jdbi.withHandle(handle -> handle.createQuery("select collection from collections where id = :id").bind("id", collectionId).mapTo(COLLECTION).one());
collection.getLinks().add(new Link().href(uriInfo.getRequestUri().toString()).rel("self"));
return Response.ok(collection).build();
}
use of com.baremaps.model.Collection in project baremaps by baremaps.
the class CollectionsResource method getCollections.
@Override
public Response getCollections() {
List<Collection> collectionList = jdbi.withHandle(handle -> handle.createQuery("select collection from collections").mapTo(COLLECTION).list());
collectionList.forEach(collection -> collection.getLinks().add(new Link().href(uriInfo.getRequestUri().toString() + "/" + collection.getId()).rel("self")));
Collections collections = new Collections().collections(collectionList);
collections.getLinks().add(new Link().href(uriInfo.getRequestUri().toString()).rel("self"));
return Response.ok(collections).build();
}
Aggregations