package er.googlechart.components;
import com.webobjects.appserver.WOAssociation;
import com.webobjects.appserver.WOComponent;
import com.webobjects.appserver.WOContext;
import com.webobjects.appserver.WOElement;
import com.webobjects.appserver.WOResponse;
import com.webobjects.foundation.NSDictionary;
import er.extensions.foundation.ERXMutableURL;
/**
* QR Codes (see http://code.google.com/apis/chart/#qrcodes).
*
* @binding text the text to encode
* @binding outputEncoding the output encoding to use (defaults to UTF-8)
* @binding ecLevel the error correction level ("L", "M", "Q", or "H")
* @binding margin the margin around the code
* @binding size "wxh" format chart size ("300x400")
* @binding width the width of the chart
* @binding height the height of the chart
* @binding custom custom query string parameters to append
* @binding id the id of the img tag
* @binding class the class of the img tag
* @binding alt the alt text of the img tag
*
* @author mschrag
*/
public class GCQRCode extends GCAbstractChart {
protected WOAssociation _text;
protected WOAssociation _outputEncoding;
protected WOAssociation _ecLevel;
protected WOAssociation _margin;
public GCQRCode(String name, NSDictionary associations, WOElement element) {
super(name, associations, element);
_text = (WOAssociation) associations.objectForKey("text");
_outputEncoding = (WOAssociation) associations.objectForKey("outputEncoding");
}
@Override
protected void addQueryParameters(ERXMutableURL chartUrl, WOResponse response, WOContext context) {
super.addQueryParameters(chartUrl, response, context);
WOComponent component = context.component();
chartUrl.setQueryParameter("cht", "qr");
String text = null;
if (_text != null) {
text = (String) _text.valueInComponent(component);
}
if (text != null) {
chartUrl.setQueryParameter("chl", text);
}
String outputEncoding = null;
if (_outputEncoding != null) {
outputEncoding = (String) _outputEncoding.valueInComponent(component);
}
if (outputEncoding != null) {
chartUrl.setQueryParameter("choe", outputEncoding);
}
if (_ecLevel != null || _margin != null) {
StringBuilder chld = new StringBuilder();
if (_ecLevel != null) {
String ecLevel = (String) _ecLevel.valueInComponent(component);
chld.append(ecLevel);
}
if (_margin != null) {
if (chld.length() > 0) {
chld.append('|');
}
String margin = (String) _margin.valueInComponent(component);
chld.append(margin);
}
chartUrl.setQueryParameter("chld", chld.toString());
}
}
}