Search in sources :

Example 31 with Folder

use of org.talend.dataprep.api.folder.Folder in project data-prep by Talend.

the class RenameDataSetsWithFolderPath method run.

/**
 * @see UpgradeTask#run()
 */
@Override
public void run() {
    final Stream<DataSetMetadata> datasets = dataSetMetadataRepository.list();
    datasets.forEach(dataset -> {
        final Folder folder = folderRepository.locateEntry(dataset.getId(), FolderContentType.DATASET);
        // skip home folder
        if (folder != null && !StringUtils.equals("/", folder.getPath())) {
            String newName = dataset.getName() + " - " + StringUtils.strip(folder.getPath(), "/");
            dataset.setName(newName);
            dataSetMetadataRepository.save(dataset);
            LOG.debug("dataset #{} renamed to {}", dataset.getId(), newName);
        } else {
            LOG.debug("dataset #{} not renamed since it's in the user home folder", dataset.getId());
        }
    });
}
Also used : Folder(org.talend.dataprep.api.folder.Folder) DataSetMetadata(org.talend.dataprep.api.dataset.DataSetMetadata)

Example 32 with Folder

use of org.talend.dataprep.api.folder.Folder in project data-prep by Talend.

the class FolderService method list.

/**
 * Get folders. If parentId is supplied, it will be used as filter.
 *
 * @param parentId the parent folder id parameter
 * @return direct sub folders for the given id.
 */
// @formatter:off
@RequestMapping(value = "/folders", method = GET)
@ApiOperation(value = "List children folders of the parameter if null list root children.", notes = "List all child folders of the one as parameter")
@Timed
public Stream<Folder> list(@RequestParam(required = false) @ApiParam(value = "Parent id filter.") String parentId, @RequestParam(defaultValue = "lastModificationDate") @ApiParam(value = "Sort key (by name or date).") Sort sort, @RequestParam(defaultValue = "desc") @ApiParam(value = "Order for sort key (desc or asc).") Order order) {
    // @formatter:on
    Stream<Folder> children;
    if (parentId != null) {
        if (!folderRepository.exists(parentId)) {
            throw new TDPException(FOLDER_NOT_FOUND, build().put("id", parentId));
        }
        children = folderRepository.children(parentId);
    } else {
        // This will list all folders
        children = folderRepository.searchFolders("", false);
    }
    final AtomicInteger folderCount = new AtomicInteger();
    // update the number of preparations in each children
    children = children.peek(f -> {
        final long count = folderRepository.count(f.getId(), PREPARATION);
        f.setNbPreparations(count);
        folderCount.addAndGet(1);
    });
    LOGGER.info("Found {} children for parentId: {}", folderCount.get(), parentId);
    // sort the folders
    return children.sorted(getFolderComparator(sort, order));
}
Also used : TDPException(org.talend.dataprep.exception.TDPException) PathVariable(org.springframework.web.bind.annotation.PathVariable) RequestParam(org.springframework.web.bind.annotation.RequestParam) TDPException(org.talend.dataprep.exception.TDPException) PREPARATION(org.talend.dataprep.api.folder.FolderContentType.PREPARATION) PUT(org.springframework.web.bind.annotation.RequestMethod.PUT) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) ApiParam(io.swagger.annotations.ApiParam) FOLDER_NOT_FOUND(org.talend.dataprep.exception.error.FolderErrorCodes.FOLDER_NOT_FOUND) GET(org.springframework.web.bind.annotation.RequestMethod.GET) RequestBody(org.springframework.web.bind.annotation.RequestBody) ApiOperation(io.swagger.annotations.ApiOperation) ExceptionContext.build(org.talend.daikon.exception.ExceptionContext.build) ExceptionContext(org.talend.daikon.exception.ExceptionContext) Folder(org.talend.dataprep.api.folder.Folder) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) StreamSupport(java.util.stream.StreamSupport) Api(io.swagger.annotations.Api) FolderRepository(org.talend.dataprep.folder.store.FolderRepository) SortAndOrderHelper.getFolderComparator(org.talend.dataprep.util.SortAndOrderHelper.getFolderComparator) Logger(org.slf4j.Logger) DELETE(org.springframework.web.bind.annotation.RequestMethod.DELETE) Order(org.talend.dataprep.util.SortAndOrderHelper.Order) HttpResponseContext(org.talend.dataprep.http.HttpResponseContext) Sort(org.talend.dataprep.util.SortAndOrderHelper.Sort) FolderTreeNode(org.talend.dataprep.api.folder.FolderTreeNode) RestController(org.springframework.web.bind.annotation.RestController) HttpStatus(org.springframework.http.HttpStatus) Collectors.toList(java.util.stream.Collectors.toList) List(java.util.List) Stream(java.util.stream.Stream) Security(org.talend.dataprep.security.Security) Timed(org.talend.dataprep.metrics.Timed) FolderInfo(org.talend.dataprep.api.folder.FolderInfo) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Folder(org.talend.dataprep.api.folder.Folder) Timed(org.talend.dataprep.metrics.Timed) ApiOperation(io.swagger.annotations.ApiOperation) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 33 with Folder

use of org.talend.dataprep.api.folder.Folder in project data-prep by Talend.

the class FileSystemFolderRepository method children.

@Override
public Stream<Folder> children(String parentId) {
    final FolderPath parentDpPath = fromId(parentId);
    try {
        Path folderPath;
        if (parentDpPath != null) {
            folderPath = pathsConverter.toPath(parentDpPath);
        } else {
            folderPath = pathsConverter.getRootFolder();
        }
        Stream<Folder> children;
        if (Files.notExists(folderPath)) {
            children = Stream.empty();
        } else {
            children = // 
            Files.list(folderPath).map(p -> toFolderIfDirectory(p, security.getUserId())).filter(Objects::nonNull);
        }
        return children;
    } catch (IOException e) {
        throw new TDPException(UNABLE_TO_LIST_FOLDER_CHILDREN, e, build().put("path", parentDpPath == null ? null : parentDpPath.serializeAsString()));
    }
}
Also used : Path(java.nio.file.Path) TDPException(org.talend.dataprep.exception.TDPException) IOException(java.io.IOException) Folder(org.talend.dataprep.api.folder.Folder)

Example 34 with Folder

use of org.talend.dataprep.api.folder.Folder in project data-prep by Talend.

the class SetStepRowMetadata method setStepRowMetadata.

/**
 * Update the given preparation's steps with row metadata.
 *
 * @param preparation the preparation.
 * @param currentProcessingNumber the number of the current preparation.
 * @param total the total number of preparation.
 */
private void setStepRowMetadata(PersistentPreparation preparation, AtomicLong currentProcessingNumber, long total) {
    LOGGER.info("[{}/{}] preparation #{} migration starting...", currentProcessingNumber.addAndGet(1), total, preparation.getId());
    // Check if preparation is accessible to end user
    final Folder folder = folderRepository.locateEntry(preparation.id(), PREPARATION);
    if (folder == null) {
        LOGGER.warn("Preparation {} does not belong to a folder, skip migration (not accessible to user).", preparation.getName());
        return;
    }
    // Run preparation
    final ExportParameters exportParameters = new ExportParameters();
    exportParameters.setPreparationId(preparation.getId());
    exportParameters.setDatasetId(preparation.getDataSetId());
    exportParameters.setExportType("JSON");
    // just process the preparation, the transformation service will automatically update the steps with row metadata
    try (NullOutputStream outputStream = new NullOutputStream()) {
        service.execute(exportParameters).writeTo(outputStream);
    } catch (Throwable e) {
        LOGGER.warn("Error processing preparation {} (#{}), semantic categories are not properly stored and may change if you change them using the data quality command line", preparation.getName(), preparation.getId());
        LOGGER.debug("Here is the stacktrace", e);
    }
    LOGGER.info("[{}/{}] preparation #{} done", currentProcessingNumber.get(), total, preparation.getId());
}
Also used : ExportParameters(org.talend.dataprep.api.export.ExportParameters) Folder(org.talend.dataprep.api.folder.Folder) NullOutputStream(org.apache.commons.io.output.NullOutputStream)

Example 35 with Folder

use of org.talend.dataprep.api.folder.Folder in project data-prep by Talend.

the class AddAllPreparationsToHomeTest method shouldAddAllPreparationsToHome.

@Test
public void shouldAddAllPreparationsToHome() throws Exception {
    // given
    final String homeFolderId = folderRepository.getHome().getId();
    // when
    task.run();
    // then
    final Stream<Preparation> preparations = preparationRepository.list(Preparation.class);
    preparations.forEach(p -> {
        final Folder folder = folderRepository.locateEntry(p.getId(), PREPARATION);
        assertEquals(homeFolderId, folder.getId());
    });
}
Also used : Preparation(org.talend.dataprep.api.preparation.Preparation) Folder(org.talend.dataprep.api.folder.Folder) Test(org.junit.Test)

Aggregations

Folder (org.talend.dataprep.api.folder.Folder)69 Test (org.junit.Test)36 Response (com.jayway.restassured.response.Response)25 BasePreparationTest (org.talend.dataprep.preparation.BasePreparationTest)21 ServiceBaseTest (org.talend.ServiceBaseTest)17 FolderEntry (org.talend.dataprep.api.folder.FolderEntry)16 TDPException (org.talend.dataprep.exception.TDPException)9 Collectors.toList (java.util.stream.Collectors.toList)7 List (java.util.List)6 Preparation (org.talend.dataprep.api.preparation.Preparation)6 DataSetMetadata (org.talend.dataprep.api.dataset.DataSetMetadata)5 RowMetadata (org.talend.dataprep.api.dataset.RowMetadata)5 FolderInfo (org.talend.dataprep.api.folder.FolderInfo)5 EnrichedPreparation (org.talend.dataprep.api.service.api.EnrichedPreparation)5 Stream (java.util.stream.Stream)4 Autowired (org.springframework.beans.factory.annotation.Autowired)4 PREPARATION (org.talend.dataprep.api.folder.FolderContentType.PREPARATION)4 ApiOperation (io.swagger.annotations.ApiOperation)3 IOException (java.io.IOException)3 InputStream (java.io.InputStream)3