001    /*
002    @license.text@
003     */
004    package biz.hammurapi.sql.xml;
005    
006    import java.sql.SQLException;
007    
008    import org.w3c.dom.Element;
009    
010    import biz.hammurapi.config.Context;
011    import biz.hammurapi.config.PropertyParser;
012    import biz.hammurapi.sql.SQLProcessor;
013    
014    
015    /**
016     * @author Pavel Vlasov
017     * @version $Revision: 1.2 $
018     */
019    public class Update extends SQLCommand implements Command {
020    
021            public void execute(Element holder, SQLProcessor processor, final Context context) throws SQL2XMLException {
022                    if (parameterizer==null || parameterizer.setContext(context)) {
023                            try {
024                                    int ret=processor.processUpdate(sql, parameterizer);
025                                    Element updateElement=holder.getOwnerDocument().createElement("update");
026                                    if (name!=null) {
027                                            updateElement.setAttribute("name", name);
028                                    }
029                                    
030                                    holder.appendChild(updateElement);
031                                    updateElement.appendChild(holder.getOwnerDocument().createTextNode(String.valueOf(ret)));
032                            } catch (final SQLException e) {
033                                    throw new SQL2XMLException(
034                                                    new PropertyParser(
035                                                                    new Context() {
036                                                                            public Object get(String name) {
037                                                                                    if ("error.message".equals(name)) {
038                                                                                            return e.getMessage();
039                                                                                    } else if ("error.class".equals(name)) {
040                                                                                            return e.getClass().getName();
041                                                                                    } else {
042                                                                                            return context.get(name);
043                                                                                    }
044                                                                            }
045                                                                    }, false).parse(errorMessage), e);
046                            }
047                    }
048            }
049    }