Updated Branches: refs/heads/master ca33e606e -> 9fa0fcddc
add configuration property for page orientation Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/cdf0d0f9 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/cdf0d0f9 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/cdf0d0f9 Branch: refs/heads/master Commit: cdf0d0f914a871bf158b212007223a342291d7b9 Parents: a17f232 Author: Carsten Erker <carsten.er...@akquinet.de> Authored: Wed Jan 15 14:48:48 2014 +0100 Committer: Carsten Erker <carsten.er...@akquinet.de> Committed: Wed Jan 15 14:48:48 2014 +0100 ---------------------------------------------------------------------- .../component/printer/PrinterConfiguration.java | 45 +++++++++++++++++++- .../component/printer/PrinterProducer.java | 3 +- .../component/printer/PrinterPrintTest.java | 24 +++++++++++ 3 files changed, 70 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/cdf0d0f9/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterConfiguration.java ---------------------------------------------------------------------- diff --git a/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterConfiguration.java b/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterConfiguration.java index d17c9c0..cf0c341 100644 --- a/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterConfiguration.java +++ b/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterConfiguration.java @@ -21,6 +21,7 @@ import java.net.URISyntaxException; import java.util.Map; import javax.print.DocFlavor; import javax.print.attribute.standard.MediaSizeName; +import javax.print.attribute.standard.OrientationRequested; import javax.print.attribute.standard.Sides; import org.apache.camel.util.ObjectHelper; @@ -40,6 +41,8 @@ public class PrinterConfiguration { private MediaSizeName mediaSizeName; private String sides; private Sides internalSides; + private String orientation; + private OrientationRequested internalOrientation; private boolean sendToPrinter = true; private String mediaTray; @@ -79,14 +82,17 @@ public class PrinterConfiguration { } setMediaSize((String)printSettings.get("mediaSize")); setSides((String)printSettings.get("sides")); - setMediaSizeName(assignMediaSize(mediaSize)); + setOrientation(((String)printSettings.get("orientation"))); + setMediaSizeName(assignMediaSize(mediaSize)); setInternalSides(assignSides(sides)); + setInternalOrientation(assignOrientation(orientation)); if (printSettings.containsKey("sendToPrinter")) { if (!(Boolean.valueOf((String) printSettings.get("sendToPrinter")))) { setSendToPrinter(false); } } + if (printSettings.containsKey("mediaTray")) { setMediaTray((String) printSettings.get("mediaTray")); } @@ -198,6 +204,27 @@ public class PrinterConfiguration { return answer; } + public OrientationRequested assignOrientation(final String orientation) { + OrientationRequested answer; + + if (orientation == null) { + // default to portrait + answer = OrientationRequested.PORTRAIT; + } else if (orientation.equalsIgnoreCase("portrait")) { + answer = OrientationRequested.PORTRAIT; + } else if (orientation.equalsIgnoreCase("landscape")) { + answer = OrientationRequested.LANDSCAPE; + } else if (orientation.equalsIgnoreCase("reverse-portrait")) { + answer = OrientationRequested.REVERSE_PORTRAIT; + } else if (orientation.equalsIgnoreCase("reverse-landscape")) { + answer = OrientationRequested.REVERSE_LANDSCAPE; + } else { + answer = OrientationRequested.PORTRAIT; + } + + return answer; + } + public URI getUri() { return uri; } @@ -286,6 +313,22 @@ public class PrinterConfiguration { this.internalSides = internalSides; } + public OrientationRequested getInternalOrientation() { + return internalOrientation; + } + + public void setInternalOrientation(OrientationRequested internalOrientation) { + this.internalOrientation = internalOrientation; + } + + public String getOrientation() { + return orientation; + } + + public void setOrientation( String orientation ) { + this.orientation = orientation; + } + public String getMimeType() { return mimeType; } http://git-wip-us.apache.org/repos/asf/camel/blob/cdf0d0f9/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterProducer.java ---------------------------------------------------------------------- diff --git a/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterProducer.java b/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterProducer.java index d346481..ee3239c 100644 --- a/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterProducer.java +++ b/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterProducer.java @@ -71,7 +71,8 @@ public class PrinterProducer extends DefaultProducer { } printRequestAttributeSet.add(config.getMediaSizeName()); printRequestAttributeSet.add(config.getInternalSides()); - + printRequestAttributeSet.add(config.getInternalOrientation()); + if (config.getMediaTray() != null) { MediaTray mediaTray = resolveMediaTray(config.getMediaTray()); http://git-wip-us.apache.org/repos/asf/camel/blob/cdf0d0f9/components/camel-printer/src/test/java/org/apache/camel/component/printer/PrinterPrintTest.java ---------------------------------------------------------------------- diff --git a/components/camel-printer/src/test/java/org/apache/camel/component/printer/PrinterPrintTest.java b/components/camel-printer/src/test/java/org/apache/camel/component/printer/PrinterPrintTest.java index b20ae18..2a13670 100644 --- a/components/camel-printer/src/test/java/org/apache/camel/component/printer/PrinterPrintTest.java +++ b/components/camel-printer/src/test/java/org/apache/camel/component/printer/PrinterPrintTest.java @@ -329,6 +329,30 @@ public class PrinterPrintTest extends CamelTestSupport { assertEquals("middle", mediaTray.toString()); } + @Test + public void printsWithLandscapeOrientation() throws Exception { + PrinterEndpoint endpoint = new PrinterEndpoint(); + PrinterConfiguration configuration = new PrinterConfiguration(); + configuration.setHostname("localhost"); + configuration.setPort(631); + configuration.setPrintername("DefaultPrinter"); + configuration.setMediaSizeName(MediaSizeName.ISO_A4); + configuration.setInternalSides(Sides.ONE_SIDED); + configuration.setMediaTray("middle"); + configuration.setOrientation("landscape"); + + PrinterProducer producer = new PrinterProducer(endpoint, configuration); + producer.start(); + PrinterOperations printerOperations = producer.getPrinterOperations(); + PrintRequestAttributeSet attributeSet = printerOperations.getPrintRequestAttributeSet(); + + Attribute attribute = attributeSet.get(javax.print.attribute.standard.Media.class); + assertNotNull(attribute); + assertTrue(attribute instanceof MediaTray); + MediaTray mediaTray = (MediaTray) attribute; + assertEquals("middle", mediaTray.toString()); + } + protected void setupJavaPrint() { // "install" another default printer PrintService psDefault = mock(PrintService.class);