From 4ed357774aa94ad8be60ec9d257cc414462a0dc6 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Fri, 19 Oct 2012 11:32:57 +0400 Subject: switch to junrar library --- src/com/github/junrar/impl/FileVolume.java | 65 +++++++++++++++++++++++ src/com/github/junrar/impl/FileVolumeManager.java | 54 +++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 src/com/github/junrar/impl/FileVolume.java create mode 100644 src/com/github/junrar/impl/FileVolumeManager.java (limited to 'src/com/github/junrar/impl') diff --git a/src/com/github/junrar/impl/FileVolume.java b/src/com/github/junrar/impl/FileVolume.java new file mode 100644 index 0000000..eba4da9 --- /dev/null +++ b/src/com/github/junrar/impl/FileVolume.java @@ -0,0 +1,65 @@ +/* + * This file is part of seedbox . + * + * seedbox is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * seedbox 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with seedbox. If not, see . + */ +package com.github.junrar.impl; + +import java.io.File; +import java.io.IOException; + +import com.github.junrar.Archive; +import com.github.junrar.Volume; +import com.github.junrar.io.IReadOnlyAccess; +import com.github.junrar.io.ReadOnlyAccessFile; + + +/** + * @author Rogiel + * + */ +public class FileVolume implements Volume { + private final Archive archive; + private final File file; + + /** + * @param file + */ + public FileVolume(Archive archive, File file) { + this.archive = archive; + this.file = file; + } + + @Override + public IReadOnlyAccess getReadOnlyAccess() throws IOException { + return new ReadOnlyAccessFile(file); + } + + @Override + public long getLength() { + return file.length(); + } + + @Override + public Archive getArchive() { + return archive; + } + + /** + * @return the file + */ + public File getFile() { + return file; + } +} diff --git a/src/com/github/junrar/impl/FileVolumeManager.java b/src/com/github/junrar/impl/FileVolumeManager.java new file mode 100644 index 0000000..3552248 --- /dev/null +++ b/src/com/github/junrar/impl/FileVolumeManager.java @@ -0,0 +1,54 @@ +/* + * This file is part of seedbox . + * + * seedbox is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * seedbox 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with seedbox. If not, see . + */ +package com.github.junrar.impl; + +import java.io.File; +import java.io.IOException; + +import com.github.junrar.Archive; +import com.github.junrar.Volume; +import com.github.junrar.VolumeManager; +import com.github.junrar.util.VolumeHelper; + + +/** + * @author Rogiel + * + */ +public class FileVolumeManager implements VolumeManager { + private final File firstVolume; + + public FileVolumeManager(File firstVolume) { + this.firstVolume = firstVolume; + } + + @Override + public Volume nextArchive(Archive archive, Volume last) + throws IOException { + if (last == null) + return new FileVolume(archive, firstVolume); + + FileVolume lastFileVolume = (FileVolume) last; + boolean oldNumbering = !archive.getMainHeader().isNewNumbering() + || archive.isOldFormat(); + String nextName = VolumeHelper.nextVolumeName(lastFileVolume.getFile() + .getAbsolutePath(), oldNumbering); + File nextVolume = new File(nextName); + + return new FileVolume(archive, nextVolume); + } +} -- cgit v1.2.3