com.liferay.sync.engine.service.persistence.SyncFilePersistence.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.sync.engine.service.persistence.SyncFilePersistence.java

Source

/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */

package com.liferay.sync.engine.service.persistence;

import com.j256.ormlite.stmt.QueryBuilder;
import com.j256.ormlite.stmt.SelectArg;
import com.j256.ormlite.stmt.UpdateBuilder;
import com.j256.ormlite.stmt.Where;

import com.liferay.sync.engine.model.SyncFile;

import java.nio.file.FileSystem;
import java.nio.file.FileSystems;

import java.sql.SQLException;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;

import org.apache.commons.lang.StringUtils;

/**
 * @author Shinn Lok
 */
public class SyncFilePersistence extends BasePersistenceImpl<SyncFile, Long> {

    public SyncFilePersistence() throws SQLException {
        super(SyncFile.class);
    }

    public long countByUIEvents(Integer... uiEvents) throws SQLException {
        QueryBuilder<SyncFile, Long> queryBuilder = queryBuilder();

        Where<SyncFile, Long> where = queryBuilder.where();

        where.in("uiEvent", uiEvents);

        return where.countOf();
    }

    public long countByS_T_U(long syncAccountId, String type, int uiEvent) throws SQLException {

        QueryBuilder<SyncFile, Long> queryBuilder = queryBuilder();

        Where<SyncFile, Long> where = queryBuilder.where();

        where.eq("syncAccountId", syncAccountId);
        where.eq("type", type);
        where.eq("uiEvent", uiEvent);

        where.and(3);

        return where.countOf();
    }

    public SyncFile fetchByFilePathName(String filePathName) throws SQLException {

        QueryBuilder<SyncFile, Long> queryBuilder = queryBuilder();

        queryBuilder.limit(1L);

        Where<SyncFile, Long> where = queryBuilder.where();

        where.eq("filePathName", new SelectArg(filePathName));

        return where.queryForFirst();
    }

    public SyncFile fetchByC_S(String checksum, int state) throws SQLException {
        QueryBuilder<SyncFile, Long> queryBuilder = queryBuilder();

        queryBuilder.limit(1L);

        Where<SyncFile, Long> where = queryBuilder.where();

        where.eq("checksum", checksum);
        where.eq("state", state);

        where.and(2);

        return where.queryForFirst();
    }

    public SyncFile fetchByR_S_S_First(long repositoryId, int state, long syncAccountId) throws SQLException {

        QueryBuilder<SyncFile, Long> queryBuilder = queryBuilder();

        queryBuilder.limit(1L);

        Where<SyncFile, Long> where = queryBuilder.where();

        where.eq("repositoryId", repositoryId);
        where.eq("state", state);
        where.eq("syncAccountId", syncAccountId);
        where.ne("uiEvent", SyncFile.UI_EVENT_DELETED_LOCAL);
        where.ne("uiEvent", SyncFile.UI_EVENT_DELETED_REMOTE);
        where.ne("uiEvent", SyncFile.UI_EVENT_TRASHED_LOCAL);
        where.ne("uiEvent", SyncFile.UI_EVENT_TRASHED_REMOTE);

        where.and(7);

        return where.queryForFirst();
    }

    public SyncFile fetchByPF_S_First(String parentFilePathName, int state) throws SQLException {

        QueryBuilder<SyncFile, Long> queryBuilder = queryBuilder();

        queryBuilder.limit(1L);

        Where<SyncFile, Long> where = queryBuilder.where();

        FileSystem fileSystem = FileSystems.getDefault();

        parentFilePathName = StringUtils.replace(parentFilePathName + fileSystem.getSeparator(), "\\", "\\\\");

        where.like("filePathName", new SelectArg(parentFilePathName + "%"));

        where.eq("state", state);
        where.ne("uiEvent", SyncFile.UI_EVENT_DELETED_LOCAL);
        where.ne("uiEvent", SyncFile.UI_EVENT_DELETED_REMOTE);
        where.ne("uiEvent", SyncFile.UI_EVENT_TRASHED_LOCAL);
        where.ne("uiEvent", SyncFile.UI_EVENT_TRASHED_REMOTE);

        where.and(6);

        return where.queryForFirst();
    }

    public SyncFile fetchByS_U_First(long syncAccountId, int uiEvent) throws SQLException {

        QueryBuilder<SyncFile, Long> queryBuilder = queryBuilder();

        queryBuilder.limit(1L);

        Where<SyncFile, Long> where = queryBuilder.where();

        where.eq("syncAccountId", syncAccountId);
        where.eq("uiEvent", uiEvent);

        where.and(2);

        return where.queryForFirst();
    }

    public SyncFile fetchByR_S_T_V(long repositoryId, long syncAccountId, long typePK, long versionId)
            throws SQLException {

        QueryBuilder<SyncFile, Long> queryBuilder = queryBuilder();

        queryBuilder.limit(1L);

        Where<SyncFile, Long> where = queryBuilder.where();

        where.eq("repositoryId", repositoryId);
        where.eq("syncAccountId", syncAccountId);
        where.eq("typePK", typePK);
        where.eq("versionId", versionId);

        where.and(4);

        return where.queryForFirst();
    }

    public SyncFile fetchByR_S_T(long repositoryId, long syncAccountId, long typePK) throws SQLException {

        QueryBuilder<SyncFile, Long> queryBuilder = queryBuilder();

        queryBuilder.limit(1L);

        Where<SyncFile, Long> where = queryBuilder.where();

        where.eq("repositoryId", repositoryId);
        where.eq("syncAccountId", syncAccountId);
        where.eq("typePK", typePK);

        where.and(3);

        return where.queryForFirst();
    }

    public List<SyncFile> findByParentFilePathName(String parentFilePathName) throws SQLException {

        QueryBuilder<SyncFile, Long> queryBuilder = queryBuilder();

        Where<SyncFile, Long> where = queryBuilder.where();

        FileSystem fileSystem = FileSystems.getDefault();

        parentFilePathName = StringUtils.replace(parentFilePathName + fileSystem.getSeparator(), "\\", "\\\\");

        where.like("filePathName", new SelectArg(parentFilePathName + "%"));

        return where.query();
    }

    public List<SyncFile> findBySyncAccountId(long syncAccountId) throws SQLException {

        return queryForEq("syncAccountId", syncAccountId);
    }

    public List<SyncFile> findByPF_L(String parentFilePathName, long localSyncTime) throws SQLException {

        QueryBuilder<SyncFile, Long> queryBuilder = queryBuilder();

        Where<SyncFile, Long> where = queryBuilder.where();

        FileSystem fileSystem = FileSystems.getDefault();

        parentFilePathName = StringUtils.replace(parentFilePathName + fileSystem.getSeparator(), "\\", "\\\\");

        where.like("filePathName", new SelectArg(parentFilePathName + "%"));

        where.lt("localSyncTime", localSyncTime);
        where.or(where.eq("state", SyncFile.STATE_SYNCED), where.eq("uiEvent", SyncFile.UI_EVENT_UPLOADING));
        where.ne("type", SyncFile.TYPE_SYSTEM);

        where.and(4);

        return where.query();
    }

    public List<SyncFile> findByP_S(long parentFolderId, long syncAccountId) throws SQLException {

        Map<String, Object> fieldValues = new HashMap<>();

        fieldValues.put("parentFolderId", parentFolderId);
        fieldValues.put("syncAccountId", syncAccountId);

        return queryForFieldValues(fieldValues);
    }

    public List<SyncFile> findByS_S(int state, long syncAccountId) throws SQLException {

        Map<String, Object> fieldValues = new HashMap<>();

        fieldValues.put("state", state);
        fieldValues.put("syncAccountId", syncAccountId);

        return queryForFieldValues(fieldValues);
    }

    public List<SyncFile> findByS_U(long syncAccountId, int uiEvent, String orderByColumn, boolean ascending)
            throws SQLException {

        QueryBuilder<SyncFile, Long> queryBuilder = queryBuilder();

        queryBuilder.orderBy(orderByColumn, ascending);

        Where<SyncFile, Long> where = queryBuilder.where();

        where.eq("syncAccountId", syncAccountId);
        where.eq("uiEvent", uiEvent);

        where.and(2);

        return where.query();
    }

    public List<SyncFile> findByR_S_S(long repositoryId, int state, long syncAccountId) throws SQLException {

        Map<String, Object> fieldValues = new HashMap<>();

        fieldValues.put("repositoryId", repositoryId);
        fieldValues.put("state", state);
        fieldValues.put("syncAccountId", syncAccountId);

        return queryForFieldValues(fieldValues);
    }

    public void renameByParentFilePathName(final String sourceParentFilePathName,
            final String targetParentFilePathName) throws SQLException {

        Callable<Object> callable = new Callable<Object>() {

            @Override
            public Object call() throws Exception {
                FileSystem fileSystem = FileSystems.getDefault();

                List<SyncFile> syncFiles = findByParentFilePathName(sourceParentFilePathName);

                for (SyncFile syncFile : syncFiles) {
                    String filePathName = syncFile.getFilePathName();

                    filePathName = StringUtils.replaceOnce(filePathName,
                            sourceParentFilePathName + fileSystem.getSeparator(),
                            targetParentFilePathName + fileSystem.getSeparator());

                    syncFile.setFilePathName(filePathName);

                    update(syncFile);
                }

                return null;
            }

        };

        callBatchTasks(callable);
    }

    public List<SyncFile> findByR_S_T(long repositoryId, long syncAccountId, String type) throws SQLException {

        Map<String, Object> fieldValues = new HashMap<>();

        fieldValues.put("repositoryId", repositoryId);
        fieldValues.put("syncAccountId", syncAccountId);
        fieldValues.put("type", type);

        return queryForFieldValues(fieldValues);
    }

    public void updateByParentFilePathName(String parentFilePathName, int state, int uiEvent) throws SQLException {

        UpdateBuilder<SyncFile, Long> updateBuilder = updateBuilder();

        updateBuilder.updateColumnValue("state", state);
        updateBuilder.updateColumnValue("uiEvent", uiEvent);

        Where<SyncFile, Long> where = updateBuilder.where();

        FileSystem fileSystem = FileSystems.getDefault();

        parentFilePathName = StringUtils.replace(parentFilePathName + fileSystem.getSeparator(), "\\", "\\\\");

        where.like("filePathName", new SelectArg(parentFilePathName + "%"));

        updateBuilder.update();
    }

}