/** * 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.model; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.databind.JsonNode; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; import com.liferay.sync.engine.service.persistence.BasePersistenceImpl; import com.liferay.sync.engine.util.JSONUtil; import java.io.IOException; import java.util.HashMap; import java.util.Map; /** * @author Shinn Lok */ @DatabaseTable(daoClass = BasePersistenceImpl.class, tableName = "SyncFile") @JsonIgnoreProperties(ignoreUnknown = true) public class SyncFile extends StateAwareModel { public static final String EVENT_ADD = "add"; public static final String EVENT_DELETE = "delete"; public static final String EVENT_GET = "get"; public static final String EVENT_MOVE = "move"; public static final String EVENT_RESTORE = "restore"; public static final String EVENT_TRASH = "trash"; public static final String EVENT_UPDATE = "update"; public static final int STATE_ERROR = 2; public static final int STATE_IN_PROGRESS = 1; public static final int STATE_SYNCED = 0; public static final int STATE_UNSYNCED = 3; public static final String TYPE_FILE = "file"; public static final String TYPE_FOLDER = "folder"; public static final String TYPE_PRIVATE_WORKING_COPY = "privateWorkingCopy"; public static final String TYPE_SYSTEM = "system"; public static final int UI_EVENT_ACCESS_DENIED_LOCAL = 28; public static final int UI_EVENT_ADDED_LOCAL = 1; public static final int UI_EVENT_ADDED_REMOTE = 2; public static final int UI_EVENT_DELETED_LOCAL = 3; public static final int UI_EVENT_DELETED_REMOTE = 4; public static final int UI_EVENT_DOWNLOAD_EXCEPTION = 29; public static final int UI_EVENT_DOWNLOADED_NEW = 5; public static final int UI_EVENT_DOWNLOADED_UPDATE = 6; public static final int UI_EVENT_DOWNLOADING = 7; public static final int UI_EVENT_DUPLICATE_LOCK = 8; public static final int UI_EVENT_EXCEEDED_SIZE_LIMIT = 9; public static final int UI_EVENT_FILE_NAME_TOO_LONG = 10; public static final int UI_EVENT_INVALID_FILE_EXTENSION = 23; public static final int UI_EVENT_INVALID_FILE_NAME = 11; public static final int UI_EVENT_INVALID_PERMISSIONS = 12; public static final int UI_EVENT_MOVED_LOCAL = 13; public static final int UI_EVENT_MOVED_REMOTE = 14; public static final int UI_EVENT_PARENT_MISSING = 24; public static final int UI_EVENT_RENAMED_LOCAL = 21; public static final int UI_EVENT_RENAMED_REMOTE = 22; public static final int UI_EVENT_RESTORED_LOCAL = 26; public static final int UI_EVENT_RESTORED_REMOTE = 27; public static final int UI_EVENT_RESYNCING = 28; public static final int UI_EVENT_TRASHED_LOCAL = 15; public static final int UI_EVENT_TRASHED_REMOTE = 16; public static final int UI_EVENT_UPDATED_LOCAL = 17; public static final int UI_EVENT_UPDATED_REMOTE = 18; public static final int UI_EVENT_UPLOAD_EXCEPTION = 25; public static final int UI_EVENT_UPLOADED = 19; public static final int UI_EVENT_UPLOADING = 20; @Override public boolean equals(Object object) { if (object == this) { return true; } if (!(object instanceof SyncFile)) { return false; } SyncFile syncFile = (SyncFile)object; if (syncFile.getSyncFileId() == syncFileId) { return true; } else { return false; } } public String getChangeLog() { return changeLog; } public String getChecksum() { return checksum; } public long getCompanyId() { return companyId; } public long getCreateTime() { return createTime; } public String getDescription() { return description; } public String getEvent() { return event; } public String getExtension() { return extension; } public String getExtraSettings() { return extraSettings; } public String getFilePathName() { return filePathName; } public String getLanTokenKey() { return lanTokenKey; } public String getLocalExtraSettings() { return localExtraSettings; } public String getLocalExtraSettingValue(String key) { if (localExtraSettings == null) { return null; } try { JsonNode jsonNode = JSONUtil.readTree(localExtraSettings); JsonNode valueJsonNode = jsonNode.get(key); return valueJsonNode.asText(); } catch (Exception e) { return null; } } public long getLocalSyncTime() { return localSyncTime; } public long getLockExpirationDate() { return lockExpirationDate; } public long getLockUserId() { return lockUserId; } public String getLockUserName() { return lockUserName; } public String getMimeType() { return mimeType; } public long getModifiedTime() { return modifiedTime; } public String getName() { return name; } public long getParentFolderId() { return parentFolderId; } public long getPreviousModifiedTime() { return previousModifiedTime; } public long getRepositoryId() { return repositoryId; } public long getSize() { return size; } public long getSyncAccountId() { return syncAccountId; } public long getSyncFileId() { return syncFileId; } public String getType() { return type; } public long getTypePK() { return typePK; } public String getTypeUuid() { return typeUuid; } public long getUserId() { return userId; } public String getUserName() { return userName; } public String getVersion() { return version; } public long getVersionId() { return versionId; } @Override public int hashCode() { return (int)(syncFileId ^ (syncFileId >>> 32)); } public boolean isFile() { return type.equals(TYPE_FILE); } public boolean isFolder() { if (!isFile() && !isPrivateWorkingCopy()) { return true; } return false; } public boolean isPrivateWorkingCopy() { return type.equals(TYPE_PRIVATE_WORKING_COPY); } public boolean isSystem() { return type.equals(TYPE_SYSTEM); } public boolean isUnsynced() { if (state == STATE_UNSYNCED) { return true; } return false; } public void setChangeLog(String changeLog) { this.changeLog = changeLog; } public void setChecksum(String checksum) { this.checksum = checksum; } public void setCompanyId(long companyId) { this.companyId = companyId; } public void setCreateTime(long createTime) { this.createTime = createTime; } public void setDescription(String description) { this.description = description; } public void setEvent(String event) { this.event = event; } public void setExtension(String extension) { this.extension = extension; } public void setExtraSettings(String extraSettings) { this.extraSettings = extraSettings; } public void setFilePathName(String filePathName) { this.filePathName = filePathName; } public void setLanTokenKey(String lanTokenKey) { this.lanTokenKey = lanTokenKey; } public void setLocalExtraSetting(String key, Object value) throws IOException { Map<String, Object> map = new HashMap(); if (localExtraSettings != null) { map = JSONUtil.readValue(localExtraSettings, Map.class); } map.put(key, value); localExtraSettings = JSONUtil.writeValueAsString(map); } public void setLocalExtraSettings(String localExtraSettings) { this.localExtraSettings = localExtraSettings; } public void setLocalSyncTime(long localSyncTime) { this.localSyncTime = localSyncTime; } public void setLockExpirationDate(long lockExpirationDate) { this.lockExpirationDate = lockExpirationDate; } public void setLockUserId(long lockUserId) { this.lockUserId = lockUserId; } public void setLockUserName(String lockUserName) { this.lockUserName = lockUserName; } public void setMimeType(String mimeType) { this.mimeType = mimeType; } public void setModifiedTime(long modifiedTime) { this.modifiedTime = modifiedTime; } public void setName(String name) { this.name = name; } public void setParentFolderId(long parentFolderId) { this.parentFolderId = parentFolderId; } public void setPreviousModifiedTime(long previousModifiedTime) { this.previousModifiedTime = previousModifiedTime; } public void setRepositoryId(long repositoryId) { this.repositoryId = repositoryId; } public void setSize(long size) { this.size = size; } public void setSyncAccountId(long syncAccountId) { this.syncAccountId = syncAccountId; } public void setSyncFileId(long syncFileId) { this.syncFileId = syncFileId; } public void setType(String type) { this.type = type; } public void setTypePK(long typePK) { this.typePK = typePK; } public void setTypeUuid(String typeUuid) { this.typeUuid = typeUuid; } public void setUserId(long userId) { this.userId = userId; } public void setUserName(String userName) { this.userName = userName; } public void setVersion(String version) { this.version = version; } public void setVersionId(long versionId) { this.versionId = versionId; } public void unsetLocalExtraSetting(String key) throws IOException { if (localExtraSettings == null) { return; } Map map = JSONUtil.readValue(localExtraSettings, Map.class); map.remove(key); if (map.isEmpty()) { localExtraSettings = null; } else { localExtraSettings = JSONUtil.writeValueAsString(map); } } @DatabaseField(defaultValue = "", useGetSet = true) protected String changeLog; @DatabaseField(index = true, useGetSet = true) protected String checksum; @DatabaseField(useGetSet = true) protected long companyId; @DatabaseField(useGetSet = true) protected long createTime; @DatabaseField(defaultValue = "", useGetSet = true, width = 16777216) protected String description; @DatabaseField(persisted = false) protected String event; @DatabaseField(useGetSet = true) protected String extension; @DatabaseField(useGetSet = true, width = 16777216) protected String extraSettings; @DatabaseField(uniqueIndex = true, useGetSet = true, width = 16777216) protected String filePathName; @DatabaseField(useGetSet = true) protected String lanTokenKey; @DatabaseField(useGetSet = true, width = 16777216) protected String localExtraSettings; @DatabaseField(useGetSet = true) protected long localSyncTime; @DatabaseField(useGetSet = true) protected long lockExpirationDate; @DatabaseField(useGetSet = true) protected long lockUserId; @DatabaseField(useGetSet = true) protected String lockUserName; @DatabaseField(useGetSet = true) protected String mimeType; @DatabaseField(useGetSet = true) protected long modifiedTime; @DatabaseField(useGetSet = true) protected String name; @DatabaseField(useGetSet = true) protected long parentFolderId; @DatabaseField(useGetSet = true) protected long previousModifiedTime; @DatabaseField(useGetSet = true) protected long repositoryId; @DatabaseField(useGetSet = true) protected long size; @DatabaseField(index = true, useGetSet = true) protected long syncAccountId; @DatabaseField(generatedId = true, useGetSet = true) protected long syncFileId; @DatabaseField(useGetSet = true) protected String type; @DatabaseField(index = true, useGetSet = true) protected long typePK; @DatabaseField(useGetSet = true) protected String typeUuid; @DatabaseField(useGetSet = true) protected long userId; @DatabaseField(useGetSet = true) protected String userName; @DatabaseField(useGetSet = true) protected String version; @DatabaseField(useGetSet = true) protected long versionId; }