Search in sources :

Example 1 with OSMImportOp

use of org.locationtech.geogig.osm.internal.OSMImportOp in project GeoGig by boundlessgeo.

the class OsmImportWebOp method getRepresentation.

@Override
public Representation getRepresentation(final Variant variant) {
    final Request request = getRequest();
    final Context context = super.getContext(request);
    Form options = getRequest().getResourceRef().getQueryAsForm();
    final String urlOrFilepath = options.getFirstValue("uri");
    final boolean add = Boolean.valueOf(options.getFirstValue("add"));
    final String mappingFile = options.getFirstValue("mapping");
    Mapping mapping = null;
    if (mappingFile != null) {
        mapping = Mapping.fromFile(mappingFile);
    }
    final boolean noRaw = Boolean.valueOf(options.getFirstValue("noRaw"));
    final String message = options.getFirstValue("message");
    if (urlOrFilepath == null) {
        String msg = "Missing parameter: uri\n" + "Usage: GET <repo context>/osm/import?uri=<osm file URI>[&<arg>=<value>]+\n" + "Arguments:\n" + " * uri: Mandatory. URL or path to OSM data file in the server filesystem\n" + " * add: Optional. true|false. Default: false. If true, do not remove previous data before importing.\n" + " * mapping: Optional. Location of mapping file in the server filesystem\n" + " * noRaw: Optional. true|false. Default: false. If true, do not import raw data when using a mapping\n" + " * message: Optional. Message for the commit to create.";
        throw new CommandSpecException(msg);
    }
    OSMImportOp command = context.command(OSMImportOp.class);
    command.setAdd(add);
    command.setDataSource(urlOrFilepath);
    command.setMapping(mapping);
    command.setMessage(message);
    command.setNoRaw(noRaw);
    AsyncCommand<Optional<OSMReport>> asyncCommand;
    URL repo = context.repository().getLocation();
    String description = String.format("osm import %s, repository: %s", urlOrFilepath, repo);
    asyncCommand = AsyncContext.get().run(command, description);
    final String rootPath = request.getRootRef().toString();
    MediaType mediaType = variant.getMediaType();
    Representation rep = new OSMReportRepresentation(mediaType, asyncCommand, rootPath);
    return rep;
}
Also used : Context(org.locationtech.geogig.api.Context) AsyncContext(org.locationtech.geogig.rest.AsyncContext) Optional(com.google.common.base.Optional) Form(org.restlet.data.Form) Request(org.restlet.data.Request) Mapping(org.locationtech.geogig.osm.internal.Mapping) OSMImportOp(org.locationtech.geogig.osm.internal.OSMImportOp) Representation(org.restlet.resource.Representation) URL(java.net.URL) MediaType(org.restlet.data.MediaType) CommandSpecException(org.locationtech.geogig.web.api.CommandSpecException)

Aggregations

Optional (com.google.common.base.Optional)1 URL (java.net.URL)1 Context (org.locationtech.geogig.api.Context)1 Mapping (org.locationtech.geogig.osm.internal.Mapping)1 OSMImportOp (org.locationtech.geogig.osm.internal.OSMImportOp)1 AsyncContext (org.locationtech.geogig.rest.AsyncContext)1 CommandSpecException (org.locationtech.geogig.web.api.CommandSpecException)1 Form (org.restlet.data.Form)1 MediaType (org.restlet.data.MediaType)1 Request (org.restlet.data.Request)1 Representation (org.restlet.resource.Representation)1