Derek Hulley 97654618ad Fix for AR-1432: Patches for FK indexes
Fix for AR-1433: Upgrade failures on PostgreSQL
Partial fix for AR-160: Concurrency fix for version counter
Partial fix for AR-1483: Synchronization issues

This is an overhaul of the current state of the upgrade scripts.  All redundant scripts have been ripped out and replaced
with fresh 2.1 scripts.  Indexes for FK relationships have been put in place where required.  Several edge cases have been
dealt with including columns being added to two indexes, Sybase not allowing column additions for NOT NULL columns of
certain types, etc.

These changes have been tested for 1.4.0 -> 2.0 -> 2.1 on
MySQL
Oracle
Sybase
PostgreSQL

Found a bug in the VersionCounter Hibernate classes where the optimistic version support was not implemented.



git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6216 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2007-07-11 23:38:59 +00:00

137 lines
3.3 KiB
Java

/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.repo.domain.hibernate;
import java.io.Serializable;
import org.alfresco.repo.domain.StoreKey;
import org.alfresco.repo.domain.VersionCount;
/**
* Hibernate-specific implementation of the domain entity <b>versioncounter</b>.
*
* @author Derek Hulley
*/
public class VersionCountImpl implements VersionCount, Serializable
{
private static final long serialVersionUID = 6420375860928877809L;
private StoreKey key;
private long version;
private int versionCount;
public VersionCountImpl()
{
versionCount = 0;
}
/**
* @see #getKey()
*/
public boolean equals(Object obj)
{
if (obj == null)
{
return false;
}
else if (obj == this)
{
return true;
}
else if (!(obj instanceof VersionCount))
{
return false;
}
VersionCount that = (VersionCount) obj;
return (this.getKey().equals(that.getKey()));
}
/**
* @see #getKey()
*/
public int hashCode()
{
return getKey().hashCode();
}
/**
* @see #getKey()
*/
public String toString()
{
return getKey().toString();
}
public StoreKey getKey() {
return key;
}
public void setKey(StoreKey key)
{
this.key = key;
}
public Long getVersion()
{
return version;
}
/**
* For Hibernate use
*/
@SuppressWarnings("unused")
private void setVersion(Long version)
{
this.version = version;
}
/**
* For Hibernate use
*/
public void setVersionCount(int versionCount)
{
this.versionCount = versionCount;
}
public int incrementVersionCount()
{
int versionCount = getVersionCount() + 1;
setVersionCount(versionCount);
return versionCount;
}
/**
* Reset back to 0
*/
public void resetVersionCount()
{
setVersionCount(0);
}
public int getVersionCount()
{
return versionCount;
}
}