/** * Create a new Model. * * @param model {@link org.wso2.carbon.ml.commons.domain.MLModelData} object * @return JSON of {@link org.wso2.carbon.ml.commons.domain.MLModelData} object */ @POST @Produces("application/json") @Consumes("application/json") public Response createModel(MLModelData model) { if (model.getAnalysisId() == 0 || model.getVersionSetId() == 0) { logger.error("Required parameters missing"); return Response.status(Response.Status.BAD_REQUEST) .entity("Required parameters missing") .build(); } PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); try { int tenantId = carbonContext.getTenantId(); String userName = carbonContext.getUsername(); model.setTenantId(tenantId); model.setUserName(userName); MLModelData insertedModel = mlModelHandler.createModel(model); return Response.ok(insertedModel).build(); } catch (MLModelHandlerException e) { String msg = MLUtils.getErrorMsg("Error occurred while creating a model : " + model, e); logger.error(msg, e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR) .entity(new MLErrorBean(e.getMessage())) .build(); } }
/** * Download the model * * @param modelName Name of the model * @return A {@link org.wso2.carbon.ml.commons.domain.MLModel} as a {@link * javax.ws.rs.core.StreamingOutput} */ @GET @Path("/{modelName}/export") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response exportModel(@PathParam("modelName") String modelName) { PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); int tenantId = carbonContext.getTenantId(); String userName = carbonContext.getUsername(); try { MLModelData model = mlModelHandler.getModel(tenantId, userName, modelName); if (model != null) { final MLModel generatedModel = mlModelHandler.retrieveModel(model.getId()); StreamingOutput stream = new StreamingOutput() { public void write(OutputStream outputStream) throws IOException { ObjectOutputStream out = new ObjectOutputStream(outputStream); out.writeObject(generatedModel); } }; return Response.ok(stream) .header("Content-disposition", "attachment; filename=" + modelName) .build(); } else { return Response.status(Response.Status.NOT_FOUND).build(); } } catch (MLModelHandlerException e) { String msg = MLUtils.getErrorMsg( String.format( "Error occurred while retrieving model [name] %s of tenant [id] %s and [user] %s .", modelName, tenantId, userName), e); logger.error(msg, e); return Response.status(Response.Status.INTERNAL_SERVER_ERROR) .entity(new MLErrorBean(e.getMessage())) .build(); } }