[primefaces] r11760 committed - Refactor barcode apis to support SVG in addition to PNG

9 views
Skip to first unread message

prime...@googlecode.com

unread,
Aug 21, 2014, 4:32:45 PM8/21/14
to primeface...@googlegroups.com
Revision: 11760
Author: cagatay...@gmail.com
Date: Thu Aug 21 20:32:14 2014 UTC
Log: Refactor barcode apis to support SVG in addition to PNG
https://code.google.com/p/primefaces/source/detail?r=11760

Modified:

/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/BarcodeGenerator.java

/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/BarcodeHandler.java

/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/CodabarGenerator.java

/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/Code128Generator.java

/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/Code39Generator.java

/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/DataMatrixGenerator.java

/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/EAN13Generator.java

/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/EAN8Generator.java

/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/Int2of5Generator.java

/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/PDF417Generator.java

/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/PostnetGenerator.java

/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/UPCAGenerator.java

/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/UPCEGenerator.java

/primefaces/trunk/src/main/java/org/primefaces/component/barcode/BarcodeRenderer.java
/primefaces/trunk/src/main/resources-maven-jsf/ui/barcode.xml

=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/BarcodeGenerator.java
Mon Aug 18 21:06:20 2014 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/BarcodeGenerator.java
Thu Aug 21 20:32:14 2014 UTC
@@ -16,9 +16,9 @@
package org.primefaces.application.resource.barcode;

import java.io.IOException;
-import java.io.OutputStream;
+import org.krysalis.barcode4j.output.CanvasProvider;

public interface BarcodeGenerator {

- public void generate(OutputStream stream, String value) throws
IOException;
+ public void generate(CanvasProvider canvasProvider, String value)
throws IOException;
}
=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/BarcodeHandler.java
Wed Aug 20 19:14:41 2014 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/BarcodeHandler.java
Thu Aug 21 20:32:14 2014 UTC
@@ -15,6 +15,7 @@
*/
package org.primefaces.application.resource.barcode;

+import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
@@ -23,10 +24,18 @@
import java.util.logging.Logger;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import org.krysalis.barcode4j.impl.code39.Code39Bean;
+import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
+import org.krysalis.barcode4j.output.svg.SVGCanvasProvider;
import org.primefaces.application.resource.BaseDynamicContentHandler;
import org.primefaces.context.RequestContext;
import org.primefaces.util.Constants;
import org.primefaces.util.StringEncrypter;
+import org.w3c.dom.DocumentFragment;

public class BarcodeHandler extends BaseDynamicContentHandler {

@@ -55,22 +64,40 @@

if(encryptedValue != null) {
BarcodeGenerator generator = GENERATORS.get(params.get("gen"));
+ String format = params.get("fmt");
boolean cache =
Boolean.valueOf(params.get(Constants.DYNAMIC_CONTENT_CACHE_PARAM));
StringEncrypter strEn =
RequestContext.getCurrentInstance().getEncrypter();
String value = strEn.decrypt(encryptedValue);
ExternalContext externalContext = context.getExternalContext();
-
- externalContext.setResponseStatus(200);
- externalContext.setResponseContentType("image/png");
-
- handleCache(externalContext, cache);
-
OutputStream out = externalContext.getResponseOutputStream();
-
+
try {
- generator.generate(out, value);
+ handleCache(externalContext, cache);
+
+ if(format.equals("png")) {
+ externalContext.setResponseContentType("image/png");
+
+ BitmapCanvasProvider bitmapCanvasProvider = new
BitmapCanvasProvider(out, "image/x-png", 150,
BufferedImage.TYPE_BYTE_BINARY, false, 0);
+ generator.generate(bitmapCanvasProvider, value);
+ bitmapCanvasProvider.finish();
+ }
+ else if(format.equals("svg")) {
+
externalContext.setResponseContentType("image/svg+xml");
+
+ SVGCanvasProvider svgCanvasProvider = new
SVGCanvasProvider(false, 0);
+ generator.generate(svgCanvasProvider, value);
+ DocumentFragment frag =
svgCanvasProvider.getDOMFragment();
+
+ TransformerFactory factory =
TransformerFactory.newInstance();
+ Transformer trans = factory.newTransformer();
+ Source src = new
javax.xml.transform.dom.DOMSource(frag);
+ Result res = new
javax.xml.transform.stream.StreamResult(out);
+ trans.transform(src, res);
+ }
+
+ externalContext.setResponseStatus(200);
}
- catch(IOException e) {
+ catch(Exception e) {
logger.log(Level.SEVERE, "Error in streaming barcode
resource. {0}", new Object[]{e.getMessage()});
}
finally {
=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/CodabarGenerator.java
Tue Aug 19 07:13:23 2014 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/CodabarGenerator.java
Thu Aug 21 20:32:14 2014 UTC
@@ -15,19 +15,15 @@
*/
package org.primefaces.application.resource.barcode;

-import java.awt.image.BufferedImage;
import java.io.IOException;
-import java.io.OutputStream;
import org.krysalis.barcode4j.impl.codabar.CodabarBean;
-import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
+import org.krysalis.barcode4j.output.CanvasProvider;

public class CodabarGenerator implements BarcodeGenerator {

- public void generate(OutputStream stream, String value) throws
IOException {
+ public void generate(CanvasProvider canvasProvider, String value)
throws IOException {
CodabarBean bean = new CodabarBean();
- BitmapCanvasProvider canvas = new
BitmapCanvasProvider(stream, "image/x-png", 150,
BufferedImage.TYPE_BYTE_BINARY, false, 0);
- bean.generateBarcode(canvas, value);
- canvas.finish();
+ bean.generateBarcode(canvasProvider, value);
}

}
=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/Code128Generator.java
Tue Aug 19 07:13:23 2014 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/Code128Generator.java
Thu Aug 21 20:32:14 2014 UTC
@@ -15,19 +15,15 @@
*/
package org.primefaces.application.resource.barcode;

-import java.awt.image.BufferedImage;
import java.io.IOException;
-import java.io.OutputStream;
import org.krysalis.barcode4j.impl.code128.Code128Bean;
-import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
+import org.krysalis.barcode4j.output.CanvasProvider;

public class Code128Generator implements BarcodeGenerator {

- public void generate(OutputStream stream, String value) throws
IOException {
+ public void generate(CanvasProvider canvasProvider, String value)
throws IOException {
Code128Bean bean = new Code128Bean();
- BitmapCanvasProvider canvas = new
BitmapCanvasProvider(stream, "image/x-png", 150,
BufferedImage.TYPE_BYTE_BINARY, false, 0);
- bean.generateBarcode(canvas, value);
- canvas.finish();
+ bean.generateBarcode(canvasProvider, value);
}

}
=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/Code39Generator.java
Mon Aug 18 21:06:20 2014 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/Code39Generator.java
Thu Aug 21 20:32:14 2014 UTC
@@ -15,19 +15,15 @@
*/
package org.primefaces.application.resource.barcode;

-import java.awt.image.BufferedImage;
import java.io.IOException;
-import java.io.OutputStream;
import org.krysalis.barcode4j.impl.code39.Code39Bean;
-import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
+import org.krysalis.barcode4j.output.CanvasProvider;

public class Code39Generator implements BarcodeGenerator {

- public void generate(OutputStream stream, String value) throws
IOException {
+ public void generate(CanvasProvider canvasProvider, String value)
throws IOException {
Code39Bean bean = new Code39Bean();
- BitmapCanvasProvider canvas = new
BitmapCanvasProvider(stream, "image/x-png", 150,
BufferedImage.TYPE_BYTE_BINARY, false, 0);
- bean.generateBarcode(canvas, value);
- canvas.finish();
+ bean.generateBarcode(canvasProvider, value);
}

}
=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/DataMatrixGenerator.java
Wed Aug 20 19:14:41 2014 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/DataMatrixGenerator.java
Thu Aug 21 20:32:14 2014 UTC
@@ -15,18 +15,14 @@
*/
package org.primefaces.application.resource.barcode;

-import java.awt.image.BufferedImage;
import java.io.IOException;
-import java.io.OutputStream;
import org.krysalis.barcode4j.impl.datamatrix.DataMatrixBean;
-import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
+import org.krysalis.barcode4j.output.CanvasProvider;

public class DataMatrixGenerator implements BarcodeGenerator {

- public void generate(OutputStream stream, String value) throws
IOException {
+ public void generate(CanvasProvider canvasProvider, String value)
throws IOException {
DataMatrixBean bean = new DataMatrixBean();
- BitmapCanvasProvider canvas = new
BitmapCanvasProvider(stream, "image/x-png", 150,
BufferedImage.TYPE_BYTE_BINARY, false, 0);
- bean.generateBarcode(canvas, value);
- canvas.finish();
+ bean.generateBarcode(canvasProvider, value);
}
}
=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/EAN13Generator.java
Wed Aug 20 19:14:41 2014 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/EAN13Generator.java
Thu Aug 21 20:32:14 2014 UTC
@@ -15,18 +15,14 @@
*/
package org.primefaces.application.resource.barcode;

-import java.awt.image.BufferedImage;
import java.io.IOException;
-import java.io.OutputStream;
import org.krysalis.barcode4j.impl.upcean.EAN13Bean;
-import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
+import org.krysalis.barcode4j.output.CanvasProvider;

public class EAN13Generator implements BarcodeGenerator {

- public void generate(OutputStream stream, String value) throws
IOException {
+ public void generate(CanvasProvider canvasProvider, String value)
throws IOException {
EAN13Bean bean = new EAN13Bean();
- BitmapCanvasProvider canvas = new
BitmapCanvasProvider(stream, "image/x-png", 150,
BufferedImage.TYPE_BYTE_BINARY, false, 0);
- bean.generateBarcode(canvas, value);
- canvas.finish();
+ bean.generateBarcode(canvasProvider, value);
}
}
=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/EAN8Generator.java
Wed Aug 20 19:14:41 2014 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/EAN8Generator.java
Thu Aug 21 20:32:14 2014 UTC
@@ -15,18 +15,14 @@
*/
package org.primefaces.application.resource.barcode;

-import java.awt.image.BufferedImage;
import java.io.IOException;
-import java.io.OutputStream;
import org.krysalis.barcode4j.impl.upcean.EAN8Bean;
-import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
+import org.krysalis.barcode4j.output.CanvasProvider;

public class EAN8Generator implements BarcodeGenerator {

- public void generate(OutputStream stream, String value) throws
IOException {
+ public void generate(CanvasProvider canvasProvider, String value)
throws IOException {
EAN8Bean bean = new EAN8Bean();
- BitmapCanvasProvider canvas = new
BitmapCanvasProvider(stream, "image/x-png", 150,
BufferedImage.TYPE_BYTE_BINARY, false, 0);
- bean.generateBarcode(canvas, value);
- canvas.finish();
+ bean.generateBarcode(canvasProvider, value);
}
}
=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/Int2of5Generator.java
Mon Aug 18 21:06:20 2014 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/Int2of5Generator.java
Thu Aug 21 20:32:14 2014 UTC
@@ -15,19 +15,15 @@
*/
package org.primefaces.application.resource.barcode;

-import java.awt.image.BufferedImage;
import java.io.IOException;
-import java.io.OutputStream;
import org.krysalis.barcode4j.impl.int2of5.Interleaved2Of5Bean;
-import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
+import org.krysalis.barcode4j.output.CanvasProvider;

public class Int2of5Generator implements BarcodeGenerator {

- public void generate(OutputStream stream, String value) throws
IOException {
+ public void generate(CanvasProvider canvasProvider, String value)
throws IOException {
Interleaved2Of5Bean bean = new Interleaved2Of5Bean();
- BitmapCanvasProvider canvas = new
BitmapCanvasProvider(stream, "image/x-png", 150,
BufferedImage.TYPE_BYTE_BINARY, false, 0);
- bean.generateBarcode(canvas, value);
- canvas.finish();
+ bean.generateBarcode(canvasProvider, value);
}

}
=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/PDF417Generator.java
Wed Aug 20 19:14:41 2014 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/PDF417Generator.java
Thu Aug 21 20:32:14 2014 UTC
@@ -15,18 +15,14 @@
*/
package org.primefaces.application.resource.barcode;

-import java.awt.image.BufferedImage;
import java.io.IOException;
-import java.io.OutputStream;
import org.krysalis.barcode4j.impl.pdf417.PDF417Bean;
-import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
+import org.krysalis.barcode4j.output.CanvasProvider;

public class PDF417Generator implements BarcodeGenerator {

- public void generate(OutputStream stream, String value) throws
IOException {
+ public void generate(CanvasProvider canvasProvider, String value)
throws IOException {
PDF417Bean bean = new PDF417Bean();
- BitmapCanvasProvider canvas = new
BitmapCanvasProvider(stream, "image/x-png", 150,
BufferedImage.TYPE_BYTE_BINARY, false, 0);
- bean.generateBarcode(canvas, value);
- canvas.finish();
+ bean.generateBarcode(canvasProvider, value);
}
}
=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/PostnetGenerator.java
Wed Aug 20 19:14:41 2014 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/PostnetGenerator.java
Thu Aug 21 20:32:14 2014 UTC
@@ -15,18 +15,14 @@
*/
package org.primefaces.application.resource.barcode;

-import java.awt.image.BufferedImage;
import java.io.IOException;
-import java.io.OutputStream;
import org.krysalis.barcode4j.impl.postnet.POSTNETBean;
-import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
+import org.krysalis.barcode4j.output.CanvasProvider;

public class PostnetGenerator implements BarcodeGenerator {

- public void generate(OutputStream stream, String value) throws
IOException {
+ public void generate(CanvasProvider canvasProvider, String value)
throws IOException {
POSTNETBean bean = new POSTNETBean();
- BitmapCanvasProvider canvas = new
BitmapCanvasProvider(stream, "image/x-png", 150,
BufferedImage.TYPE_BYTE_BINARY, false, 0);
- bean.generateBarcode(canvas, value);
- canvas.finish();
+ bean.generateBarcode(canvasProvider, value);
}
}
=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/UPCAGenerator.java
Wed Aug 20 19:14:41 2014 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/UPCAGenerator.java
Thu Aug 21 20:32:14 2014 UTC
@@ -15,18 +15,14 @@
*/
package org.primefaces.application.resource.barcode;

-import java.awt.image.BufferedImage;
import java.io.IOException;
-import java.io.OutputStream;
import org.krysalis.barcode4j.impl.upcean.UPCABean;
-import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
+import org.krysalis.barcode4j.output.CanvasProvider;

public class UPCAGenerator implements BarcodeGenerator {

- public void generate(OutputStream stream, String value) throws
IOException {
+ public void generate(CanvasProvider canvasProvider, String value)
throws IOException {
UPCABean bean = new UPCABean();
- BitmapCanvasProvider canvas = new
BitmapCanvasProvider(stream, "image/x-png", 150,
BufferedImage.TYPE_BYTE_BINARY, false, 0);
- bean.generateBarcode(canvas, value);
- canvas.finish();
+ bean.generateBarcode(canvasProvider, value);
}
}
=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/UPCEGenerator.java
Wed Aug 20 19:14:41 2014 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/application/resource/barcode/UPCEGenerator.java
Thu Aug 21 20:32:14 2014 UTC
@@ -15,18 +15,14 @@
*/
package org.primefaces.application.resource.barcode;

-import java.awt.image.BufferedImage;
import java.io.IOException;
-import java.io.OutputStream;
import org.krysalis.barcode4j.impl.upcean.UPCEBean;
-import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
+import org.krysalis.barcode4j.output.CanvasProvider;

public class UPCEGenerator implements BarcodeGenerator {

- public void generate(OutputStream stream, String value) throws
IOException {
+ public void generate(CanvasProvider canvasProvider, String value)
throws IOException {
UPCEBean bean = new UPCEBean();
- BitmapCanvasProvider canvas = new
BitmapCanvasProvider(stream, "image/x-png", 150,
BufferedImage.TYPE_BYTE_BINARY, false, 0);
- bean.generateBarcode(canvas, value);
- canvas.finish();
+ bean.generateBarcode(canvasProvider, value);
}
}
=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/component/barcode/BarcodeRenderer.java
Thu Aug 21 17:58:28 2014 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/component/barcode/BarcodeRenderer.java
Thu Aug 21 20:32:14 2014 UTC
@@ -58,7 +58,8 @@
src =
builder.append(resourcePath).append("&").append(Constants.DYNAMIC_CONTENT_PARAM).append("=").append(URLEncoder.encode(rid, "UTF-8"))
.append("&").append(Constants.DYNAMIC_CONTENT_TYPE_PARAM).append("=").append(handlerType)
.append("&gen=").append(type)
- .append(Constants.DYNAMIC_CONTENT_CACHE_PARAM).append("=").append(barcode.isCache()).toString();
+ .append("&fmt=").append(barcode.getFormat())
+ .append("&").append(Constants.DYNAMIC_CONTENT_CACHE_PARAM).append("=").append(barcode.isCache()).toString();
}
catch (UnsupportedEncodingException ex) {
throw new IOException(ex);
=======================================
--- /primefaces/trunk/src/main/resources-maven-jsf/ui/barcode.xml Thu Aug
21 17:58:28 2014 UTC
+++ /primefaces/trunk/src/main/resources-maven-jsf/ui/barcode.xml Thu Aug
21 20:32:14 2014 UTC
@@ -29,6 +29,13 @@
<type>java.lang.Boolean</type>
<defaultValue>true</defaultValue>
<description>Controls browser caching mode of the resource.
Default is true.</description>
+ </attribute>
+ <attribute>
+ <name>format</name>
+ <required>false</required>
+ <type>java.lang.String</type>
+ <defaultValue>png</defaultValue>
+ <description>Format of the generated barcode, valid values are
png (default) and svg..</description>
</attribute>
<attribute>
<name>value</name>
Reply all
Reply to author
Forward
0 new messages