* (non-Javadoc)
*
* @see com.adito.webforwards.WebForwardDatabase#updateWebForward(com.adito.webforwards.WebForward)
*/
public void updateWebForward(WebForward webForward) throws Exception {
JDBCPreparedStatement ps = db.getStatement("updateWebForward.update");
/*
* For this method, we could get errors when inserting proxy paths (if
* path already exists). To deal with this the whole operation is run as
* a transaction.
*/
ps.startTransaction();
try {
ps.setInt(1, webForward.getType());
ps.setString(2, webForward.getResourceName());
ps.setString(3, webForward.getDestinationURL());
ps.setString(4, webForward.getResourceDescription());
ps.setString(5, webForward.getCategory());
ps.setInt(6, webForward.isAutoStart() ? 1 : 0);
Calendar c = Calendar.getInstance();
ps.setString(7, db.formatTimestamp(c));
ps.setInt(8, webForward.getResourceId());
ps.execute();
if (webForward instanceof ReverseProxyWebForward) {
ps = db.getStatement(ps, "updateWebForward.reverseProxy.delete");
ps.setInt(1, webForward.getResourceId());
ps.execute();
ps = db.getStatement(ps, "updateWebForward.reverseProxy.insert");
StringTokenizer t = new StringTokenizer(((ReverseProxyWebForward) webForward).getPaths(), "\n\r");
while (t.hasMoreTokens()) {
String path = t.nextToken();
ps.setString(1, path);
ps.setInt(2, webForward.getResourceId());
ps.execute();
ps.reset();
}
ps = db.getStatement(ps, "updateWebForward.reverseProxyOptions.update");
ps.setString(1, ((ReverseProxyWebForward) webForward).getAuthenticationUsername());
ps.setString(2, ((ReverseProxyWebForward) webForward).getAuthenticationPassword());
ps.setString(3, ((ReverseProxyWebForward) webForward).getPreferredAuthenticationScheme());
ps.setInt(4, ((ReverseProxyWebForward) webForward).getActiveDNS() ? 1 : 0);
ps.setString(5, ((ReverseProxyWebForward) webForward).getHostHeader());
ps.setString(6, ((ReverseProxyWebForward) webForward).getFormType());
ps.setString(7, ((ReverseProxyWebForward) webForward).getFormParameters());
ps.setString(8, ((ReverseProxyWebForward) webForward).getCharset());
ps.setInt(9, webForward.getResourceId());
ps.execute();
}
if (webForward instanceof ReplacementProxyWebForward) {
ps = db.getStatement(ps, "updateWebForward.replacementProxyOptions.update");
ps.setString(1, ((ReplacementProxyWebForward) webForward).getEncoding());
ps.setString(2, ((ReplacementProxyWebForward) webForward).getRestrictToHosts().getAsPropertyText());
ps.setString(3, ((ReplacementProxyWebForward) webForward).getAuthenticationUsername());
ps.setString(4, ((ReplacementProxyWebForward) webForward).getAuthenticationPassword());
ps.setString(5, ((ReplacementProxyWebForward) webForward).getPreferredAuthenticationScheme());
ps.setString(6, ((ReplacementProxyWebForward) webForward).getFormType());
ps.setString(7, ((ReplacementProxyWebForward) webForward).getFormParameters());
ps.setInt(8, webForward.getResourceId());
ps.execute();
}
ps.commit();
} catch (Exception e) {
ps.rollback();
throw e;
} finally {
ps.releasePreparedStatement();
ps.endTransaction();
}
}