CLI.java
- /*
- * 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.apache.commons.compress.archivers.sevenz;
- import java.io.File;
- import java.io.IOException;
- import java.util.Locale;
- /**
- * Usage: archive-name [list]
- */
- public class CLI {
- private enum Mode {
- LIST("Analysing") {
- private String getContentMethods(final SevenZArchiveEntry entry) {
- final StringBuilder sb = new StringBuilder();
- boolean first = true;
- for (final SevenZMethodConfiguration m : entry.getContentMethods()) {
- if (!first) {
- sb.append(", ");
- }
- first = false;
- sb.append(m.getMethod());
- if (m.getOptions() != null) {
- sb.append("(").append(m.getOptions()).append(")");
- }
- }
- return sb.toString();
- }
- @Override
- public void takeAction(final SevenZFile archive, final SevenZArchiveEntry entry) {
- System.out.print(entry.getName());
- if (entry.isDirectory()) {
- System.out.print(" dir");
- } else {
- System.out.print(" " + entry.getCompressedSize() + "/" + entry.getSize());
- }
- if (entry.getHasLastModifiedDate()) {
- System.out.print(" " + entry.getLastModifiedDate());
- } else {
- System.out.print(" no last modified date");
- }
- if (!entry.isDirectory()) {
- System.out.println(" " + getContentMethods(entry));
- } else {
- System.out.println();
- }
- }
- };
- private final String message;
- Mode(final String message) {
- this.message = message;
- }
- public String getMessage() {
- return message;
- }
- public abstract void takeAction(SevenZFile archive, SevenZArchiveEntry entry) throws IOException;
- }
- private static Mode grabMode(final String[] args) {
- if (args.length < 2) {
- return Mode.LIST;
- }
- return Enum.valueOf(Mode.class, args[1].toUpperCase(Locale.ROOT));
- }
- public static void main(final String[] args) throws Exception {
- if (args.length == 0) {
- usage();
- return;
- }
- final Mode mode = grabMode(args);
- System.out.println(mode.getMessage() + " " + args[0]);
- final File file = new File(args[0]);
- if (!file.isFile()) {
- System.err.println(file + " doesn't exist or is a directory");
- }
- try (SevenZFile archive = SevenZFile.builder().setFile(file).get()) {
- SevenZArchiveEntry ae;
- while ((ae = archive.getNextEntry()) != null) {
- mode.takeAction(archive, ae);
- }
- }
- }
- private static void usage() {
- System.out.println("Parameters: archive-name [list]");
- }
- }