use of de.tudarmstadt.ukp.clarin.webanno.model.Project in project webanno by webanno.
the class RemoteApiController2 method curationCreate.
@ApiOperation(value = "Create curation for a document in a project")
@RequestMapping(value = "/" + PROJECTS + "/{" + PARAM_PROJECT_ID + "}/" + DOCUMENTS + "/{" + PARAM_DOCUMENT_ID + "}/" + CURATION, method = RequestMethod.POST, consumes = MULTIPART_FORM_DATA_VALUE, produces = APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<RResponse<RAnnotation>> curationCreate(@PathVariable(PARAM_PROJECT_ID) long aProjectId, @PathVariable(PARAM_DOCUMENT_ID) long aDocumentId, @RequestParam(value = PARAM_CONTENT) MultipartFile aFile, @RequestParam(value = PARAM_FORMAT) Optional<String> aFormat, @RequestParam(value = PARAM_STATE) Optional<String> aState, UriComponentsBuilder aUcb) throws Exception {
Project project = getProject(aProjectId);
SourceDocument document = getDocument(project, aDocumentId);
JCas annotationCas = createCompatibleCas(aProjectId, aDocumentId, aFile, aFormat);
// If they are compatible, then we can store the new annotations
curationService.writeCurationCas(annotationCas, document, false);
AnnotationDocumentState resultState = AnnotationDocumentState.IN_PROGRESS;
if (aState.isPresent()) {
SourceDocumentState state = parseSourceDocumentState(aState.get());
switch(state) {
case CURATION_IN_PROGRESS:
resultState = AnnotationDocumentState.IN_PROGRESS;
document.setState(state);
documentService.createSourceDocument(document);
break;
case CURATION_FINISHED:
resultState = AnnotationDocumentState.FINISHED;
document.setState(state);
documentService.createSourceDocument(document);
break;
// fallthrough
case NEW:
// fallthrough
case ANNOTATION_IN_PROGRESS:
// fallthrough
case ANNOTATION_FINISHED:
default:
throw new IllegalObjectStateException("State [%s] not valid when uploading a curation.", aState.get());
}
} else {
document.setState(SourceDocumentState.CURATION_IN_PROGRESS);
documentService.createSourceDocument(document);
}
RResponse<RAnnotation> response = new RResponse<>(new RAnnotation(WebAnnoConst.CURATION_USER, resultState, new Date()));
return ResponseEntity.created(aUcb.path(API_BASE + "/" + PROJECTS + "/{pid}/" + DOCUMENTS + "/{did}/" + CURATION).buildAndExpand(project.getId(), document.getId()).toUri()).body(response);
}
use of de.tudarmstadt.ukp.clarin.webanno.model.Project in project webanno by webanno.
the class RemoteApiController2 method projectExport.
@ApiOperation(value = "Export a project to a ZIP file")
@RequestMapping(value = ("/" + PROJECTS + "/{" + PARAM_PROJECT_ID + "}/" + EXPORT), method = RequestMethod.GET, produces = { "application/zip", APPLICATION_JSON_UTF8_VALUE })
public ResponseEntity<InputStreamResource> projectExport(@PathVariable(PARAM_PROJECT_ID) long aProjectId) throws Exception {
// Get project (this also ensures that it exists and that the current user can access it
Project project = getProject(aProjectId);
ProjectExportRequest per = new ProjectExportRequest(Model.of(project), "bin");
File exportedFile = exportService.generateZipFile(per);
// Turn the file into a resource and auto-delete the file when the resource closes the
// stream.
InputStreamResource result = new InputStreamResource(new FileInputStream(exportedFile) {
@Override
public void close() throws IOException {
super.close();
FileUtils.forceDelete(exportedFile);
}
});
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.valueOf("application/zip"));
httpHeaders.setContentLength(exportedFile.length());
httpHeaders.set("Content-Disposition", "attachment; filename=\"" + exportedFile.getName() + "\"");
return new ResponseEntity<>(result, httpHeaders, HttpStatus.OK);
}
use of de.tudarmstadt.ukp.clarin.webanno.model.Project in project webanno by webanno.
the class RemoteApiController2 method annotationsList.
@ApiOperation(value = "List annotations of a document in a project")
@RequestMapping(value = "/" + PROJECTS + "/{" + PARAM_PROJECT_ID + "}/" + DOCUMENTS + "/{" + PARAM_DOCUMENT_ID + "}/" + ANNOTATIONS, method = RequestMethod.GET, produces = APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<RResponse<List<RAnnotation>>> annotationsList(@PathVariable(PARAM_PROJECT_ID) long aProjectId, @PathVariable(PARAM_DOCUMENT_ID) long aDocumentId) throws Exception {
// Get project (this also ensures that it exists and that the current user can access it
Project project = getProject(aProjectId);
SourceDocument doc = getDocument(project, aDocumentId);
List<AnnotationDocument> annotations = documentService.listAnnotationDocuments(doc);
List<RAnnotation> annotationList = new ArrayList<>();
for (AnnotationDocument annotation : annotations) {
annotationList.add(new RAnnotation(annotation));
}
return ResponseEntity.ok(new RResponse<>(annotationList));
}
Aggregations