/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.waveprotocol.box.expimp; import org.waveprotocol.box.server.persistence.file.FileUtils; import org.waveprotocol.wave.media.model.AttachmentId; import org.waveprotocol.wave.model.id.WaveId; import org.waveprotocol.wave.model.id.WaveletId; import org.waveprotocol.wave.model.id.InvalidIdException; import java.text.DecimalFormat; /** * File and directory names for Export/Import utilities. * * @author akaplanov@gmail.com (Andrew Kaplanov) */ public class FileNames { private static final String FILE_NUMBER_PATTERN="000000"; private final String exportDir; public FileNames(String exportDir) { this.exportDir = exportDir; } public static String getWaveDirName(WaveId waveId) { return FileUtils.waveIdToPathSegment(waveId); } public static String getWaveletDirName(WaveletId waveletId) { return FileUtils.waveletIdToPathSegment(waveletId); } public static String getSnapshotFileName() { return "snapshot.json"; } public static String getDeltasFileName(int part) { return "deltas." + new DecimalFormat(FILE_NUMBER_PATTERN).format(part) + ".json"; } public static String getAttachmentsDirName() { return "attachments"; } public static String getAttachmentFileName(AttachmentId attachmentId) { return attachmentId.serialise() + ".json"; } public String getExportDir() { return exportDir; } public String getWaveDirPath(WaveId waveId) { return exportDir + "/" + getWaveDirName(waveId); } public String getWaveletDirPath(WaveId waveId, WaveletId waveletId) { return getWaveDirPath(waveId) + "/" + getWaveletDirName(waveletId); } public String getSnapshotFilePath(WaveId waveId, WaveletId waveletId) { return getWaveletDirPath(waveId, waveletId) + "/" + getSnapshotFileName(); } public String getDeltasFilePath(WaveId waveId, WaveletId waveletId, int part) { return getWaveletDirPath(waveId, waveletId) + "/" + getDeltasFileName(part); } public String getAttachmentsDirPath(WaveId waveId, WaveletId waveletId) { return getWaveletDirPath(waveId, waveletId) + "/" + getAttachmentsDirName(); } public String getAttachmentFilePath(WaveId waveId, WaveletId waveletId, AttachmentId attachmentId) { return getAttachmentsDirPath(waveId, waveletId) + "/" + getAttachmentFileName(attachmentId); } public static WaveId getWaveIdFromFileName(String name) { return FileUtils.waveIdFromPathSegment(name); } public static WaveletId getWaveletIdFromFileName(String name) { return FileUtils.waveletIdFromPathSegment(name); } public static AttachmentId getAttachmentIdFromFileName(String name) throws InvalidIdException { return AttachmentId.deserialise(name.substring(0, name.length()-5)); } }