Skip to content

Commit

Permalink
ref #179: added a smooth transition between single digit to two digits
Browse files Browse the repository at this point in the history
pdf version
  • Loading branch information
torakiki committed Jan 17, 2016
1 parent d0706b2 commit 7c89f83
Show file tree
Hide file tree
Showing 4 changed files with 102 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
*/
package org.sejda.cli.model;

import org.sejda.conversion.PdfVersionAdapter;
import org.sejda.conversion.PdfVersionAdapterWithFallback;

import uk.co.flamingpenguin.jewel.cli.Option;

Expand All @@ -35,5 +35,5 @@ public interface CliArgumentsWithPdfOutput extends TaskCliArguments {
boolean getCompressed();

@Option(shortName = "v", description = "pdf version of the output document/s {1.2, 1.3, 1.4, 1.5, 1.6 or 1.7}. Default is 1.6. (optional)", defaultValue = "1.6")
PdfVersionAdapter getPdfVersion();
PdfVersionAdapterWithFallback getPdfVersion();
}
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ private void populateCommonImageOutputParameters(AbstractPdfToImageParameters pa
private void populateCommonPdfOutputParameters(AbstractPdfOutputParameters parameters,
CliArgumentsWithPdfOutput taskCliArguments) {
parameters.setCompress(taskCliArguments.getCompressed());
parameters.setVersion(taskCliArguments.getPdfVersion().getEnumValue());
parameters.setVersion(taskCliArguments.getPdfVersion().getVersion());
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/*
* Created on 17 gen 2016
* Copyright 2015 by Andrea Vacondio (andrea.vacondio@gmail.com).
* This file is part of Sejda.
*
* Sejda is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Sejda 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with Sejda. If not, see <http://www.gnu.org/licenses/>.
*/
package org.sejda.conversion;

import org.sejda.model.pdf.PdfVersion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* Adapter providing a smooth transition between single digit pdf versions (7 for pdf version 1.7) used in sejda-console v1.x to double digit pdf version (1.7 for pdf version 1.7)
* used in sejda-console v2.x
*
* @author Andrea Vacondio
*
*/
public class PdfVersionAdapterWithFallback {
private static final Logger LOG = LoggerFactory.getLogger(PdfVersionAdapterWithFallback.class);

private PdfVersion version;

public PdfVersionAdapterWithFallback(String userFriendlyName) {
if (userFriendlyName.matches("[01234567]{1}")) {
LOG.warn(
"Single digit PDF version '{}' is deprecated and will be removed in future releases, please use the two digits '1.{}' format",
userFriendlyName, userFriendlyName);
this.version = new PdfVersionAdapter("1." + userFriendlyName).getEnumValue();
} else {
this.version = new PdfVersionAdapter(userFriendlyName).getEnumValue();
}
}

public PdfVersion getVersion() {
return version;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/*
* Created on 17 gen 2016
* Copyright 2015 by Andrea Vacondio (andrea.vacondio@gmail.com).
* This file is part of Sejda.
*
* Sejda is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Sejda 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with Sejda. If not, see <http://www.gnu.org/licenses/>.
*/
package org.sejda.conversion;

import static org.junit.Assert.assertEquals;

import org.junit.Test;
import org.sejda.model.exception.SejdaRuntimeException;
import org.sejda.model.pdf.PdfVersion;

/**
* @author Andrea Vacondio
*
*/
public class PdfVersionAdapterWithFallbackTest {
@Test
public void testPositiveFallback() {
assertEquals(PdfVersion.VERSION_1_4, new PdfVersionAdapterWithFallback("4").getVersion());
}

@Test
public void testPositive() {
assertEquals(PdfVersion.VERSION_1_6, new PdfVersionAdapterWithFallback("1.6").getVersion());
}

@Test(expected = SejdaRuntimeException.class)
public void missingPoint() {
new PdfVersionAdapterWithFallback("9").getVersion();
}

}

0 comments on commit 7c89f83

Please sign in to comment.