unico 2004/07/13 01:22:10
Added: src/stores/org/apache/slide/store/impl/rdbms
MySql41RDBMSAdapter.java
Log:
MySQL 4.1 adapter replaces standard delete syntax with MySQL 4.1 specific syntax
Revision Changes Path
1.1
jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/MySql41RDBMSAdapter.java
Index: MySql41RDBMSAdapter.java
===================================================================
/*
* $Header:
/home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/MySql41RDBMSAdapter.java,v
1.1 2004/07/13 08:22:10 unico Exp $
* $Revision: 1.1 $
* $Date: 2004/07/13 08:22:10 $
*
* ====================================================================
*
* Copyright 1999-2003 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.slide.store.impl.rdbms;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.apache.slide.common.Service;
import org.apache.slide.common.ServiceAccessException;
import org.apache.slide.common.Uri;
import org.apache.slide.content.NodeRevisionDescriptor;
import org.apache.slide.content.NodeRevisionNumber;
import org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter;
import org.apache.slide.structure.ObjectNode;
import org.apache.slide.structure.ObjectNotFoundException;
import org.apache.slide.util.logger.Logger;
/**
* Adapter for MySQL 4.1. DELETE semantics are somewhat deviant
* from MySQL 4.0. Table names should be referred to by their alias.
*
* @author Alejandro Gu�zar
*/
public class MySql41RDBMSAdapter extends MySqlRDBMSAdapter {
/**
* @param service
* @param logger
*/
public MySql41RDBMSAdapter(Service service, Logger logger) {
super(service, logger);
}
/*
* @see org.apache.slide.store.impl.rdbms.RDBMSAdapter#removeObject(
* java.sql.Connection, org.apache.slide.common.Uri,
* org.apache.slide.structure.ObjectNode)
*/
public void removeObject(Connection connection, Uri uri, ObjectNode object)
throws ServiceAccessException, ObjectNotFoundException {
PreparedStatement statement = null;
try {
clearBinding(connection, uri);
// delete links
try {
statement =
connection.prepareStatement(
"delete l from LINKS l, URI u where l.URI_ID = u.URI_ID and u.URI_STRING =
?");
statement.setString(1, uri.toString());
statement.executeUpdate();
} finally {
close(statement);
}
// delete version history
// FIXME: Is this true??? Should the version history be removed if the object
is removed???
try {
statement =
connection.prepareStatement(
"delete vh from VERSION_HISTORY vh, URI u where vh.URI_ID = u.URI_ID and
u.URI_STRING = ?");
statement.setString(1, uri.toString());
statement.executeUpdate();
}
finally {
close(statement);
}
// delete version
try {
statement =
connection.prepareStatement(
"delete v from VERSION v, URI u where v.URI_ID = u.URI_ID and u.URI_STRING
= ?");
statement.setString(1, uri.toString());
statement.executeUpdate();
}
finally {
close(statement);
}
// delete the object itself
try {
statement =
connection.prepareStatement(
"delete o from OBJECT o, URI u where o.URI_ID = u.URI_ID and u.URI_STRING
= ?");
statement.setString(1, uri.toString());
statement.executeUpdate();
}
finally {
close(statement);
}
// finally delete the uri
try {
statement = connection.prepareStatement("delete from URI where URI_STRING =
?");
statement.setString(1, uri.toString());
statement.executeUpdate();
}
finally {
close(statement);
}
}
catch (SQLException e) {
throw createException(e, uri.toString());
}
}
/*
* @see org.apache.slide.store.impl.rdbms.RDBMSAdapter#removeRevisionContent(
* java.sql.Connection, org.apache.slide.common.Uri,
* org.apache.slide.content.NodeRevisionDescriptor)
*/
public void removeRevisionContent(Connection connection, Uri uri,
NodeRevisionDescriptor revisionDescriptor) throws ServiceAccessException {
try {
PreparedStatement statement = null;
try {
statement =
connection.prepareStatement(
"delete vc from VERSION_CONTENT vc, VERSION_HISTORY vh, URI u where
vc.VERSION_ID = vh.VERSION_ID and vh.REVISION_NO = ? and vh.URI_ID=u.URI_ID AND
u.URI_STRING=?");
statement.setString(1, revisionDescriptor.getRevisionNumber().toString());
statement.setString(2, uri.toString());
statement.executeUpdate();
}
finally {
close(statement);
}
}
catch (SQLException e) {
throw createException(e, uri.toString());
}
}
/*
* @see org.apache.slide.store.impl.rdbms.RDBMSAdapter#removeRevisionDescriptor(
* java.sql.Connection, org.apache.slide.common.Uri,
* org.apache.slide.content.NodeRevisionNumber)
*/
public void removeRevisionDescriptor(Connection connection, Uri uri,
NodeRevisionNumber revisionNumber) throws ServiceAccessException {
PreparedStatement statement = null;
try {
try {
statement =
connection.prepareStatement(
"delete vl from VERSION_LABELS vl, VERSION_HISTORY vh, URI u where
vl.VERSION_ID = vh.VERSION_ID and vh.REVISION_NO = ? and vh.URI_ID = u.URI_ID AND
u.URI_STRING = ?");
statement.setString(1, revisionNumber.toString());
statement.setString(2, uri.toString());
statement.executeUpdate();
}
finally {
close(statement);
}
try {
statement =
connection.prepareStatement(
"delete p from PROPERTIES p, VERSION_HISTORY vh, URI u where p.VERSION_ID
= vh.VERSION_ID and vh.REVISION_NO = ? and vh.URI_ID = u.URI_ID AND u.URI_STRING = ?");
statement.setString(1, revisionNumber.toString());
statement.setString(2, uri.toString());
statement.executeUpdate();
}
finally {
close(statement);
}
}
catch (SQLException e) {
throw createException(e, uri.toString());
}
}
/*
* @see org.apache.slide.store.impl.rdbms.RDBMSAdapter#removeRevisionDescriptors(
* java.sql.Connection, org.apache.slide.common.Uri)
*/
public void removeRevisionDescriptors(Connection connection, Uri uri)
throws ServiceAccessException {
PreparedStatement statement = null;
try {
statement =
connection.prepareStatement(
"delete vp from VERSION_PREDS vp, VERSION_HISTORY vh, URI u where
vp.VERSION_ID = vh.VERSION_ID and vh.URI_ID = u.URI_ID and u.URI_STRING = ?");
statement.setString(1, uri.toString());
statement.executeUpdate();
} catch (SQLException e) {
throw createException(e, uri.toString());
} finally {
close(statement);
}
}
/*
* @see
org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter#clearBinding(java.sql.Connection,
org.apache.slide.common.Uri)
*/
protected void clearBinding(Connection connection, Uri uri)
throws ServiceAccessException, ObjectNotFoundException, SQLException {
PreparedStatement statement = null;
// clear this uri from having bindings and being bound
try {
statement =
connection.prepareStatement(
"delete c from BINDING c, URI u where c.URI_ID = u.URI_ID and u.URI_STRING =
?");
statement.setString(1, uri.toString());
statement.executeUpdate();
}
finally {
close(statement);
}
try {
statement =
connection.prepareStatement(
"delete c from PARENT_BINDING c, URI u where c.URI_ID = u.URI_ID and
u.URI_STRING = ?");
statement.setString(1, uri.toString());
statement.executeUpdate();
}
finally {
close(statement);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]