/** * 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.util; import com.liferay.portal.kernel.json.JSON; import com.liferay.portal.kernel.util.StringBundler; import com.liferay.portal.kernel.util.StringPool; import com.liferay.sync.model.SyncDLObject; import java.util.Collections; import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.lang.StringEscapeUtils; /** * @author Michael Young * @author Shinn Lok */ @JSON public class SyncDLObjectUpdate { public SyncDLObjectUpdate( List<SyncDLObject> syncDLObjects, int resultsTotal, long lastAccessTime) { _syncDLObjects = syncDLObjects; _resultsTotal = resultsTotal; _lastAccessTime = lastAccessTime; _settingsModifiedTimes = Collections.emptyMap(); } public SyncDLObjectUpdate( List<SyncDLObject> syncDLObjects, int resultsTotal, long lastAccessTime, Map<String, Long> settingsModifiedTimes) { _syncDLObjects = syncDLObjects; _resultsTotal = resultsTotal; _lastAccessTime = lastAccessTime; _settingsModifiedTimes = settingsModifiedTimes; } public long getLastAccessTime() { return _lastAccessTime; } public int getResultsTotal() { return _resultsTotal; } public Map<String, Long> getSettingsModifiedTimes() { return _settingsModifiedTimes; } @JSON public List<SyncDLObject> getSyncDLObjects() { return _syncDLObjects; } @Override public String toString() { StringBundler sb = new StringBundler( (_settingsModifiedTimes.size() * 4) + (_syncDLObjects.size() * 80) + 5); sb.append("{\"lastAccessTime\":"); append(sb, _lastAccessTime, false); sb.append(",\"resultsTotal\":"); sb.append(_resultsTotal); sb.append(",\"settingsModifiedTimes\":{"); Set<Map.Entry<String, Long>> entries = _settingsModifiedTimes.entrySet(); Iterator<Map.Entry<String, Long>> iterator = entries.iterator(); while (iterator.hasNext()) { Map.Entry<String, Long> entry = iterator.next(); String key = entry.getKey(); long value = entry.getValue(); append(sb, key, false); sb.append(StringPool.COLON); append(sb, value, false); if (iterator.hasNext()) { sb.append(StringPool.COMMA); } } sb.append("},\"syncDLObjects\":["); for (int i = 0; i < _syncDLObjects.size(); i++) { SyncDLObject syncDLObject = _syncDLObjects.get(i); sb.append("{\"changeLog\":"); append(sb, syncDLObject.getChangeLog(), true); sb.append(",\"checksum\":"); append(sb, syncDLObject.getChecksum(), false); sb.append(",\"companyId\":"); append(sb, syncDLObject.getCompanyId(), false); sb.append(",\"createTime\":"); append(sb, syncDLObject.getCreateTime(), false); sb.append(",\"description\":"); append(sb, syncDLObject.getDescription(), true); sb.append(",\"event\":"); append(sb, syncDLObject.getEvent(), false); sb.append(",\"extension\":"); append(sb, syncDLObject.getExtension(), true); sb.append(",\"extraSettings\":"); append(sb, syncDLObject.getExtraSettings(), true); sb.append(",\"lanTokenKey\":"); append(sb, syncDLObject.getLanTokenKey(), false); sb.append(",\"lockExpirationDate\":"); Date lockExpirationDate = syncDLObject.getLockExpirationDate(); if (lockExpirationDate != null) { sb.append(lockExpirationDate.getTime()); } else { sb.append(StringPool.NULL); } sb.append(",\"lockUserId\":"); append(sb, syncDLObject.getLockUserId(), false); sb.append(",\"lockUserName\":"); append(sb, syncDLObject.getLockUserName(), true); sb.append(",\"mimeType\":"); append(sb, syncDLObject.getMimeType(), true); sb.append(",\"modifiedTime\":"); append(sb, syncDLObject.getModifiedTime(), false); sb.append(",\"name\":"); append(sb, syncDLObject.getName(), true); sb.append(",\"parentFolderId\":"); append(sb, syncDLObject.getParentFolderId(), false); sb.append(",\"repositoryId\":"); append(sb, syncDLObject.getRepositoryId(), false); sb.append(",\"size\":"); append(sb, syncDLObject.getSize(), false); sb.append(",\"syncDLObjectId\":"); append(sb, syncDLObject.getSyncDLObjectId(), false); sb.append(",\"type\":"); append(sb, syncDLObject.getType(), false); sb.append(",\"typePK\":"); append(sb, syncDLObject.getTypePK(), false); sb.append(",\"typeUuid\":"); append(sb, syncDLObject.getTypeUuid(), false); sb.append(",\"userId\":"); append(sb, syncDLObject.getUserId(), false); sb.append(",\"userName\":"); append(sb, syncDLObject.getUserName(), true); sb.append(",\"version\":"); append(sb, syncDLObject.getVersion(), false); sb.append(",\"versionId\":"); append(sb, syncDLObject.getVersionId(), false); sb.append(StringPool.CLOSE_CURLY_BRACE); if (i != (_syncDLObjects.size() - 1)) { sb.append(StringPool.COMMA); } } sb.append("]}"); return sb.toString(); } protected void append(StringBundler sb, Object s, boolean escape) { sb.append(StringPool.QUOTE); if (escape) { s = StringEscapeUtils.escapeJava(String.valueOf(s)); } sb.append(s); sb.append(StringPool.QUOTE); } private final long _lastAccessTime; private final int _resultsTotal; private final Map<String, Long> _settingsModifiedTimes; private final List<SyncDLObject> _syncDLObjects; }